一个inputtext diable 4其他输入文本和4个中的任何一个禁用一个

时间:2013-07-04 08:43:21

标签: ajax jsf primefaces facelets

我的jsf页面中有5个inputtext。我想实现这个功能,如果在第一个输入文本中输入了一些文本,则应禁用其余4。如果在剩余的4个输入文件中的任何一个中输入任何文本,则应该去掉第一个输入文本。我对jsf很新,不知道怎么做。有人请帮忙。

1 个答案:

答案 0 :(得分:0)

在JSF 2中你可以做到这一点。

<h:inputText id="inputOne" value="#{bean.value1}" disabled="#{not empty bean.value2}">
    <f:ajax event="keyup" render="inputTwo"/>
</h:inputText>
<h:inputText id="inputTwo" value="#{bean.value2}" disabled="#{not empty bean.value1}">
    <f:ajax event="keyup" render="inputOne"/>
</h:inputText>

如果您有很多字段,最好在#{bean}中引入方法,以比#{not empty bean.value1 and not empty bean.value2 and not empty bean.value3}更简单的方式执行所有检查

如果应该禁用许多分组输入,您可以在render标记的<f:ajax>属性中将它们列为空格,或者将它们与<h:panelGroup/>分组,然后渲染整个组。

<h:inputText id="inputOne" value="#{bean.value1}" disabled="#{not empty bean.value2 and not empty bean.value3 and not empty bean.value4}">
    <f:ajax event="keyup" render="inputs"/>
</h:inputText>
<h:panelGroup id="inputs">
    <h:inputText value="#{bean.value2}" disabled="#{not empty bean.value1}">
        <f:ajax event="keyup" render="inputOne"/>
    </h:inputText>
    <h:inputText value="#{bean.value3}" disabled="#{not empty bean.value1}">
        <f:ajax event="keyup" render="inputOne"/>
    </h:inputText>
    <h:inputText value="#{bean.value4}" disabled="#{not empty bean.value1}">
        <f:ajax event="keyup" render="inputOne"/>
    </h:inputText>
</h:panelGroup>