当使用a4j:支持时,焦点消失

时间:2011-08-05 11:46:16

标签: 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事件用于在页面上输出状态消息,无法删除。 问题是当我从第一个输入文本到第二个输入文本并且第二个输入文本的值在第一个输入文本的“验证”之后被更改时,焦点从第二个输入文本消失。如何防止焦点消失,但仍然使用a4j:support?

1 个答案:

答案 0 :(得分:0)

尝试使用javascript将元素重新聚焦在oncomplete

e.g。

<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处理程序时,应该重新聚焦元素.....