很抱歉,如果这已经得到解答,但我找不到任何完全符合我需要的答案或示例。
我有一个JSF(2.0)页面,其中给用户一个代码(如验证码),并且必须在inputText字段中输入该确切代码。我想在用户正确输入代码后立即禁用(或者甚至更好地隐藏)inputText字段(并且焦点仍然在inputText字段上)。
这有效:
<h:inputText id="code" value="#{myBean.code}">
<f:ajax event="keyup" render="code" />
</h:inputText>
但是在每个keyup上,inputText字段失去焦点,因此该解决方案是不可接受的。我也试过设置readonly =“true”(使用支持bean布尔值)但是它没有将inputText的readonly属性设置为true,即使它将相应的backing bean的相应布尔值设置为true:
<h:inputText id="code" value="#{myBean.code}" readonly="#{myBean.hasCodeBeenMatched}">
<f:ajax event="keyup" />
</h:inputText>
非常感谢任何帮助!
答案 0 :(得分:0)
如果您在每次按键后都能进行客户端 - 服务器通信 - 为什么不采取其他方法:
添加一个额外的面板id="removingElement"
,其中包含javascript以隐藏客户端的代码输入
将此面板设为rendered='#{myBean.hasCodeBeenMatched}'
在f:ajax
电话
<f:ajax event="keyup" execute="@this" render="removingElement" />
所以,会发生什么:每次按键时,服务器都会检查正确性,但是会重新呈现持有javascript的面板(你不应该忽略焦点)。一旦代码正确,面板就会实际呈现并执行其中的javascript - 隐藏输入文本。
我很遗憾没有提供任何正常工作的代码,因为我手头没有工作的JSF2环境。无论如何,如果你让它工作,请告诉我。希望它有所帮助...