当输入字段第一次获得焦点时,防止onkeyup事件

Prevent onkeyup event when input field first gets focus

本文关键字:防止 onkeyup 事件 焦点 输入 字段 第一次      更新时间:2023-09-26

我有一个组件,希望用户在每个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"  />

找到了一个解决方案:

我进行了一个检查,以防止在用户选项卡进入输入框时触发ajax调用。额外的a4j:support组件的添加是为了在从输入框中切换时允许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" />

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

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