如何设置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

上一篇: How to set the focus of the inputText inside dataTable

下一篇: Twilio: Can I make OUTBOUND Conference Calls?