【问题标题】:one inputtext diable 4 other input text and any of the 4 disable the one一个 inputtext 禁用 4 个其他输入文本,并且 4 个中的任何一个禁用一个
【发布时间】:2013-07-04 08:43:21
【问题描述】:

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

【问题讨论】:

    标签: ajax jsf primefaces facelets


    【解决方案1】:

    在 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}更简单

    如果有许多分组的输入应该被禁用,您可以在&lt;f:ajax&gt; 标记的render 属性中将它们以空格分隔,或者将它们与&lt;h:panelGroup/&gt; 分组并呈现整个组。

    <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>
    

    【讨论】:

    • 中,'render="inputTwo"' 将有剩余的 inputtext id 还是只有一个呢
    • 我已将所有输入文本放在表中,每个输入文本都有自己的 id。是否可以在渲染属性中使用 4 个 inputext id。
    • 我想遵循您建议的这种方法 - @GKlimov:如果您有很多字段,最好在 #{bean} 中引入方法以更简单的方式执行所有检查#{not empty bean.value1 and not empty bean.value2 and not empty bean.value3}。我应该怎么做才能做到这一点。
    • 正如我所说,您可以在render 空格分隔中列出您的ID。 “我应该怎么做才能实现这一目标。” - 在这里您需要向托管 bean 添加方法。类似public boolean isDisableValue1() {return StringUtils.isNotBlank(value2) &amp;&amp; StringUtils.isNotBlank(value3) &amp;&amp; StringUtils.isNotBlank(value4); } 并在disabled 属性中使用它:&lt;h:inputText disabled="#{bean.disableValue1}"/&gt;
    • 谢谢 GKlimov。我已经使用render 空格分隔的 id 完成了它并且它正在工作。剩下的唯一问题是,当我使用退格键从 inputtext1 中删除并将其设为空时,其他四个将被启用。而如果我一次从 inputtext1 中删除整个文本,剩余的 4 个 inputtext 仍然被禁用。我将尝试通过使用托管 bean 中的方法来解决它。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2018-09-03
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多