如何设置dataTable中inputText的焦点
下午好,
使用JSF + Primefaces。 我有一个inputText字段的数据表,它执行一个列表器,当你结束函数或按Tab键时,焦点将是输入同一个组件的低行。
Google搜索了一些东西,似乎是用JavaScript或jQuery完成的,但我没有太多知识。
看起来组件的clientId有一些形式:dataTable:0:输入,数字“0”来操纵焦点。 任何人都知道如何在dataTable中处理组件的焦点?
谢谢。
为您的组件添加适当和动态的ID,然后您可以轻松识别您的元素。
考虑下面的代码片段:
<ice:form id="form1"/>
<ice:dataTable id="dataTable1">
...
<ice:inputText id="inputText1" />
<ice:commandButton id="commandButton1" value="Set Focus" onclick="javascript: setFocusOfInput(this);" />
...
</ice:dataTable>
</ice:form>
和javascript部分:
function setFocusOfInput(obj){
var objectId = obj.id;
var requiredIndex = objectId.indexOf(':commandButton1');
var formId = objectId.substring(0, requiredIndex);
alert(formId); /* You will get your form id here, no-matter if you don't set. */
/* Now you can get your required element and do-whatever you want. */
var inputText1 = document.getElementById(formId +':inputText1');
inputText1.focus();
}
只需为您的元素添加一个合适的ID以区别于其他元素。
您可以使用PrimeFaces元素<p:focus />
,并在“context”属性中放置dataTable的ID。 “context”属性用于设置根组件以启动首次输入搜索,因此如果您使用的是AJAX,则可以更新“dataTable”和“focus”元素包装的容器,以及dataTable中的第一个输入将在AJAX调用后接收焦点:
<p:focus context="dataTable" />
如果你想直接引用输入,你也可以使用“for”属性:
<p:focus for="inputText" />
看看PrimeFaces文档:p:focus。
链接地址: http://www.djcxy.com/p/76661.html