当输入字段首先获得焦点时,防止onkeyup事件

时间:2011-06-20 16:45:41

标签: jsf javascript-events richfaces

我想让用户在每个keyup事件上调用一个组件。

问题是当用户第一次进入文本框(onfocus)时,我不想调用它。

我如何在JSF / Richfaces中解决这个问题?我需要结合一些Javascript来解决它吗?

<h:inputText id="limit1" value="#{bean.purchaseTypeItem.subPurchaseLimit}" immediate="true">
    <f:converter converterId="javax.faces.BigDecimal" />
    <f:attribute name="fieldRef" value="Purchase Limit1" />
    <a4j:support event="onkeyup" ajaxSingle="true" immediate="true" requestDelay="200" 
        actionListener="#{bean.validateAmount}" ignoreDupResponses="true" reRender="main"  />

由于

2 个答案:

答案 0 :(得分:0)

找到解决方案:

如果用户选中了输入框,我会进行检查以防止激活ajax。 额外的a4j:支持组件的添加是允许在输入框中跳出时调用ajax。

<h:inputText id="limit1" value="#{bean.purchaseTypeItem.subPurchaseLimit}" immediate="true">
    <f:converter converterId="javax.faces.BigDecimal" />
    <f:attribute name="fieldRef" value="Purchase Limit1" />
    <a4j:support event="onkeyup" ajaxSingle="true" immediate="true" requestDelay="200" 
        actionListener="#{bean.validateAmount}" ignoreDupResponses="true" reRender="main"  
    onsubmit="if(event.keyCode == 9){return false;}" />
    <a4j:support event="onblur" ajaxSingle="true" immediate="true"
    requestDelay="200" actionListener="#{bean.validateAmount}"
    ignoreDupResponses="true" reRender="main" />

答案 1 :(得分:0)

谢谢托马斯!您自己的richfaces 4 JSR-303(bean验证)解决方案的版本是......

<rich:validator event="keyup" onbeforesubmit="if(event.keyCode == 9){return false;}"/>