Jsf 2 JSF2.0在输入期间禁用inputText

Jsf 2 JSF2.0在输入期间禁用inputText,jsf-2,render,Jsf 2,Render,抱歉,如果这已经得到了回答,但我找不到任何答案或例子,完全符合我的需要 我有一个JSF(2.0)页面,在该页面中,用户得到一个代码(比如验证码),并且必须在inputText字段中输入准确的代码。我想在用户正确输入代码后禁用(或者更好的是隐藏)inputText字段(焦点仍然在inputText字段) 这项工作: <h:inputText id="code" value="#{myBean.code}"> <f:ajax event="keyup" render="co

抱歉,如果这已经得到了回答,但我找不到任何答案或例子,完全符合我的需要

我有一个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>


非常感谢您的帮助

如果您在每次按键后都能很好地进行客户机-服务器通信,为什么不采取另一种方法:

  • 添加一个包含javascript的额外面板
    id=“removingElement”
    以隐藏客户端的代码输入

    • 描述了一种检索代码inputText的唯一ID的方法
  • 给这个面板一个
    rendered='{myBean.hasCodeBeenMatched}'

  • f:ajax
    调用中重新呈现此元素

  • 那么,会发生什么:每次击键时,服务器都会检查正确性,但会重新启动包含javascript的面板(您不应该失去焦点)。只要代码正确,面板就会被实际渲染,其中的javascript就会被执行——隐藏输入文本


    很抱歉,我没有提供任何工作代码,因为我手头没有工作的JSF2环境。不管怎样,如果你能让它工作,请让我知道。希望有帮助……

    您是想在每次按键后询问服务器端,当前代码是否正确(增加服务器负载,对于使用慢速bandwith的用户来说很烦人),还是想在客户端执行此操作(向浏览器发送正确的验证码与您希望通过验证码实现的目标背道而驰)
    f:ajax
    每次按键都会询问服务器。。。由于该字段是新渲染的,焦点丢失了。是的,我愿意在每次按键后接受服务器端验证的带宽冲击。谢谢,L-Ray。我希望在没有JS的情况下达到效果,但我会在有时间的时候尝试一下。是的,问题是使用“render”会触发元素的重写-失去焦点。即使在重置焦点时,您也必须注意在验证码内再次获得相同的位置。。。希望它能起作用。