【发布时间】:2015-02-25 03:11:52
【问题描述】:
抱歉,如果这个问题已经得到解答,但我找不到任何符合我需要的答案或示例。
我有一个 JSF (2.0) 页面,其中给用户一个代码(如验证码),并且必须在 inputText 字段中输入该确切代码。一旦用户正确输入代码(并且焦点仍在 inputText 字段上),我想禁用(或者,甚至更好地隐藏)该 inputText 字段。
这行得通:
<h:inputText id="code" value="#{myBean.code}">
<f:ajax event="keyup" render="code" />
</h:inputText>
但在每次按键时 inputText 字段都会失去焦点,因此该解决方案是不可接受的。我也尝试过设置 readonly="true"(使用支持 bean 布尔值),但它没有将 inputText 的 readonly 属性设置为 true,即使它将相应的支持 bean 的相应布尔值设置为 true:
<h:inputText id="code" value="#{myBean.code}" readonly="#{myBean.hasCodeBeenMatched}">
<f:ajax event="keyup" />
</h:inputText>
非常感谢任何帮助!
【问题讨论】:
-
你想在每次按键后询问服务器端,如果当前代码是正确的(增加服务器负载并且对于带宽慢的用户来说很烦人),还是你想在客户端做-side(将正确的验证码发送到浏览器与您想要使用验证码实现的目标相反)。
f:ajax确实会在每次按键时询问服务器......并且随着字段的新鲜呈现,焦点会丢失。 -
是的,我愿意在每次按键后承受服务器端验证的带宽冲击。