h:inputText 上的条件 keyup 侦听器?

Conditional keyup listener on h:inputText?

我正在使用 JSF,我想在 InputText 元素的 keyup 事件上调用侦听器,但前提是输入文本长于 3 个字符。

我的代码是:

<h:inputText id="myId" styleClass="iceInpTxt uppercase" maxlength="15" 
value="#{controller.model.value}">
  <f:ajax event="keyup" listener="#{controller.listener}" render="anotherElement"/>
</h:inputText>

现在我正在我的侦听器中检查文本的长度,效果很好,但速度很慢。 是否有解决方法,如条件侦听器,仅在 inputText.length() > 3 时调用,在其他情况下忽略侦听器?

您可以简单地使用仅 returns 为真的 javascript-function,因此如果您的要求条件匹配则触发侦听器。

<h:inputText id="myId" 

   onkeyup="return checkLength(this)" 

   styleClass="iceInpTxt uppercase" maxlength="15" 
   value="#{controller.model.value}">
     <f:ajax event="keyup" listener="#{controller.listener}" render="anotherElement"/>
 </h:inputText>

javascript:

function checkLength(value){
   return value.length > 3;
}