一个输入文本禁用4个其他输入文本,4个输入文本中的任何一个禁用该输入文本



我的jsf页面中有5个输入文本。我想实现这样的功能,即如果在第一个输入文本中输入了一些文本,则应禁用其余4。如果在剩下的4个输入文本中的任何一个中输入了任何文本,则第一个输入文本应被取消标记。我是jsf的新手,不知道如何做到这一点。任何人都请帮忙。

在JSF2中,您可以通过这个来实现。

<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} 更简单的方式执行所有检查

如果有许多分组输入应被禁用,您可以在<f:ajax>标记的render属性中以空格分隔列出它们,也可以用<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>

最新更新