我遇到了以下问题,需要向您寻求帮助。下面是我拥有的部分代码:
<p:outputPanel id="tablePanel">
<p:dataTable id="table1" var="record" value="#{valList}" style="width:880px;">
<p:column headerText="#{msgs['name']}">
<p:inputText value="#{record.premiumStatus}" rendered="#{divRowEdit}" required="true">
<p:ajax event="change" listener="#{actionController.calculate}" update=":dialogForm:tablePanel" oncomplete="setFocusToLastElem()" onstart="rememberLastFocusElem(event)"/>
<f:convertNumber pattern="#,##0.00" />
</p:inputText>
<f:facet name="footer">
<h:outputText value="#{actionController.calculationsResults.premiumStatusSum}" >
<f:convertNumber type="currency" currencySymbol="#{msgs['currencySymbol']}" />
</h:outputText>
</f:facet>
</p:column>
...[similar inputs]...
</p:dataTable>
<script type="text/javascript">
var lastElemID;
function setFocusToLastElem() {
$("[id*='"+lastElemID+"']").focus();
}
function rememberLastFocusElem(event) {
lastElemID = event.target.id; //how to determine what element was clicked or where cursor was moved after [tab] button press?
}
当输入中的值被更改时,将执行ajax请求,并且在表单上的值被更新之后,此刻,我将注意力不再放在插入数据的元素上。我找到了一种方法来将焦点设置回最后编辑的输入(js函数setFocusToLastElem,rememberLastFocusElem),但这并不是我真正需要的。我需要该应用程序在按下“选项卡”按钮时或者在通过单击鼠标选择其他输入时将光标设置在站点上的下一个输入上,而应该在ajax更新之后将焦点设置在该位置上。
请寻求帮助,对于如何解决或重新设计解决方案的任何想法,我将非常感谢。