在 table 内 PrimeFaces/jquery 失去焦点

Focus loss in PrimeFaces/jquery inside table

我正在为我的小网络项目使用 Primefaces、JSF 和 JQuery。我有一个包含一些列的数据Table。单元格是 inputText 字段和 editable。我获取数据并将它们显示到 table.

当我编辑 table 中的值并按回车键时,我希望光标跳转到下一个单元格。在我触摸所有相关单元格一次之前,这一切正常。这意味着我从第一行开始并毫无问题地转到最后一行(这就像只用回车键向下移动)。如果我到达最后一行,按 Enter 后焦点应该回到第一行。但这不起作用。我看到焦点在第一行的时间很短,但几毫秒后焦点就消失了。

另一个例子:我从第 3 行开始,一直往下直到最后一行。然后焦点跳到第一行,直到第 2 行。这有效,但我不能再次关注第 3 行。我不知道会发生什么,也不知道为什么会这样。

相关代码如下:

JS 部分(jquery 选择器工作正常):

function cmid_jump(ind) {
console.log(ind);
ind++;
if($('#formPool\:tabView\:formTable\:p1\:'+ind+'\:cmid').length >=1) { 
    console.log($('#formPool\:tabView\:formTable\:p1\:' + ind + '\:cmid').click());
} 
else {
    console.log($('#formPool\:tabView\:formTable\:p1\:0\:cmid').click());
}

}

数据的一部分Table(并非所有列)

 <p:dataTable id = "p1" var = "pool" value = "#{controll_pool.data}" rowIndexVar="index" editable="true" editMode="cell" style="font-size: 12px">

                            <p:column id="columnMid" headerText= "Mittelkurs" style="font-size: 12px">
                                <p:cellEditor>
                                    <f:facet name="output">
                                        <h:outputText value = "#{pool.kurs_mid}" rendered="#{not empty pool.kurs_mid}"/>
                                    </f:facet>
                                    <f:facet name="input" >
                                        <p:inputText id= "cmid" onkeydown="if (event.keyCode == 13) {cmid_jump(#{index})}" styleClass="changeable" value="#{pool.mid}" />
                                    </f:facet>
                                </p:cellEditor>
                            </p:column>
</p:dataTable>

试试这个,我在 primefaces 5.0 中做过这个

function cmid_jump(ind) {
   ind++;
   var table =  $('#formPool\:tabView\:formTable\:p1');
   var max_size = table.find('tbody tr').length;
   if(ind >= max_size){
       return cmid_jump(-1);  
   }
   var cell = table.find("tr[data-ri="+ind+"]").find('td:first');
   cell.click();
}