【问题标题】:How to set the focus of the inputText inside dataTable如何在dataTable中设置inputText的焦点
【发布时间】:2014-01-25 09:16:05
【问题描述】:

下午好,

使用 JSF + Primefaces。 我有一个带有 inputText 字段的 dataTable,它执行一个侦听器,当您结束函数或按 Tab 时,焦点将是输入同一组件的低线。

google了一些东西,好像是用javascript或者jquery做的,但是我了解的不多。

组件的clientId好像有什么形式:dataTable: 0: input,数字“0”来操作焦点。 有谁知道如何在 dataTable 中处理组件的焦点?

谢谢。

【问题讨论】:

  • @VenkatRaj 你想要什么?这个问题不是很清楚。什么时候设置焦点?从哪里来?
  • 你能发布你的代码吗?另外,你试过什么?
  • 参考这个关注输入框stackoverflow.com/questions/17500704/…

标签: javascript jquery jsf primefaces


【解决方案1】:

您可以使用 PrimeFaces 元素 <p:focus />,并在“context”属性中输入数据表的 ID。 “context”属性用于设置根组件以开始第一个输入搜索,因此如果您使用 AJAX,您可以更新包装“dataTable”和“focus”元素的容器,以及 dataTable 中的第一个输入将在 AJAX 调用后获得焦点:

<p:focus context="dataTable" />

如果你想直接引用输入,你也可以使用“for”属性:

<p:focus for="inputText" />

查看 PrimeFaces 文档:p:focus

【讨论】:

    【解决方案2】:

    为您的组件添加适当和动态的 ID,然后您可以很容易地识别您的元素。

    考虑以下代码 sn-p:

    <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 以将其与其他元素区分开来。

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2020-02-18
      • 2011-03-09
      • 2015-11-01
      • 1970-01-01
      相关资源
      最近更新 更多