javascript - a4j :support is used 时焦点消失

标签 javascript events jsf focus ajax4jsf

我使用 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/

相关文章:

jsf - 是否跨 session 范围的 JSF 支持 bean 观察到 CDI 事件

javascript - 如何让 JS 函数产生的字符串出现在 div 中?

javascript - 如何使用 jQuery 事件监听器获取目标元素?

javascript - 如何在 jQuery 中向 `change` 事件添加属性

javascript - DOMContentLoaded 事件是否与 jQuery 的 .ready() 函数完全相同?

jsf - :commandButton action method not called on request scoped bean

javascript - 错误 "Unhandled ' 错误'事件“运行 yo 生成器后

javascript - 找不到模块discord.js-commando

javascript - 更新功能后 d3js 中奇怪的文本行为

jsf - 使用漂亮的面孔和网络过滤器