如何在dataTable中设置inputText的焦点

Wil*_*iro 8 javascript jquery jsf primefaces

下午好,

使用JSF + Primefaces.我有一个带有inputText字段的dataTable,它执行一个列表器,当你结束函数或按下tab时,焦点将是输入同一组件的低行.

用Google搜索一些东西,似乎要用JavaScript或jQuery完成,但我知之甚少.

似乎组件的clientId具有以下形式:dataTable:0:input,以及操作焦点的数字"0".任何人都知道如何在dataTable中处理组件的重点?

谢谢.

Par*_*mar 2

为您的组件添加正确的动态 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>
Run Code Online (Sandbox Code Playgroud)

以及 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();
}
Run Code Online (Sandbox Code Playgroud)

只需为您的元素添加适当的 id 即可将其与其他元素区分开来。