我使用 JSF,页面上有 2 个输入文本。
<h:inputText id="xxx" value="#{file.xxx}" maxlength="12" >
<a4j:support event="onchange" reRender="datePanel1"
onchange="validateXXX();"
oncomplete="process();"
/>
</h:inputText>
<h:inputText id="yyy" value="#{file.yyy}" maxlength="12" >
<a4j:support event="onchange" reRender="datePanel1"
onchange="validateYYY();"
oncomplete="process();"
/>
</h:inputText>
当任何值发生更改时,应验证该对值。如果验证失败,输入文本的其他值可以自动更新。 Oncomplete 事件用于在页面上输出状态消息,无法移除。 问题是,当我从第一个输入文本按 TAB 键到第二个输入文本,并且在第一个输入文本“验证”之后更改第二个输入文本的值时,焦点将从第二个输入文本中消失。如何防止焦点消失,但仍使用 a4j:support?
最佳答案
尝试使用 javascript 将元素重新聚焦在 oncomplete 上
例如
<h:inputText id="xxx" value="#{file.xxx}" maxlength="12" >
<a4j:support event="onchange" reRender="datePanel1"
onchange="validateXXX();"
oncomplete="process();document.getElementById('xxx').focus();"
/>
</h:inputText>
<h:inputText id="yyy" value="#{file.yyy}" maxlength="12" >
<a4j:support event="onchange" reRender="datePanel1"
onchange="validateYYY();"
oncomplete="process();document.getElementById('yyy').focus();"
/>
</h:inputText>
这有望在调用 oncomplete 处理程序时重新聚焦元素......
关于javascript - a4j :support is used 时焦点消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6955722/