我在我的小webproject中使用Primefaces,JSF和JQuery。我有一些包含一些列的dataTable。单元格是inputText字段并且可编辑。我得到数据并将它们显示在表格中。
当我在表格中编辑值并按回车键时,我希望光标跳转到下一个单元格。这一切正常,直到我触摸所有相关的细胞一次。这意味着我从第一行开始并且没有任何问题地转到最后一行(就像使用回车键一样向下键)。如果我到达最后一行,按下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());
}
}
数据表的一部分(并非所有列)
<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>
答案 0 :(得分:0)
尝试这个,我在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();
}