首页 > 解决方案 > 在输入文本中按下时如何禁用(只读)其他输入文本

问题描述

<h:form>看起来像这样:

            <h:form>
                <h:outputLabel>MDM ID:</h:outputLabel>
                <h:inputText id="searchIdMaster" value="#{tdetail.id_master}"></h:inputText>

                <h:outputLabel>Poslovni partner id:</h:outputLabel>
                <h:inputText id="searchPoslovniPartnerId"  value="#{tdetail.poslovni_partner_id}"></h:inputText>

                <h:outputLabel>JMBG:</h:outputLabel>
                <h:inputText id="searchJMBG" value="#{tdetail.jmbg}"></h:inputText>

                <h:outputLabel>PIB:</h:outputLabel>
                <h:inputText id="searchPIB" value="#{tdetail.pib}"></h:inputText>

                <h:outputLabel>MBR:</h:outputLabel>
                <h:inputText id="searchMBR" value="#{tdetail.mbr}"></h:inputText>

                <h:commandButton value="Search " action="#{tdetail.search()}">
                    <f:ajax execute="searchIdMaster searchPoslovniPartnerId searchJMBG searchPIB searchMBR"  render="outputIdMaster outputPoslovniPartnerId outputJMBG outputPIB outputMBR"></f:ajax>
                </h:commandButton>
                <h2>
                    <h:outputLabel>MDM ID:</h:outputLabel>
                    <h:outputText id="outputIdMaster" value="#{tdetail.id_master}"></h:outputText>
                    <br/>
                    <h:outputLabel>Poslovni partner id:</h:outputLabel>
                    <h:outputText id="outputPoslovniPartnerId" value="#{tdetail.poslovni_partner_id}"></h:outputText>
                    <br/>
                    <h:outputLabel>JMBG:</h:outputLabel>
                    <h:outputText id="outputJMBG" value="#{tdetail.jmbg}"></h:outputText>
                    <br/>
                    <h:outputLabel>PIB:</h:outputLabel>
                    <h:outputText id="outputPIB" value="#{tdetail.pib}"></h:outputText>
                    <br/>
                    <h:outputLabel>MBR:</h:outputLabel>
                    <h:outputText id="outputMBR" value="#{tdetail.mbr}"></h:outputText>
                </h2>
            </h:form>

这是一张更好理解的图片: form

当用户开始输入前 3 个中的一个时,<h:inputText>其他应该被禁用。如果输入最后 2 个中的一个,则应禁用前 3 个。如果删除文本(空)启用所有字段。

(用户可以仅通过 MDM ID 或仅 Poslovni 合作伙伴 ID 或仅 JMBG 或 PIB 和 MBR 搜索,希望您理解)

我发现了类似的问题,但我的问题没有解决方案。

标签: jsf

解决方案


我找到了解决方案..

                <h:outputLabel>MDM ID:</h:outputLabel>
                <p:inputText id="searchIdMaster" value="#{tdetail.id_master}">
                    <p:ajax event="keyup" update="searchJMBG searchPoslovniPartnerId" />
                </p:inputText>

                <h:outputLabel>Poslovni partner id:</h:outputLabel>
                <p:inputText id="searchPoslovniPartnerId"  value="#{tdetail.poslovni_partner_id}" disabled="#{not empty tdetail.id_master}"></p:inputText>

                <h:outputLabel>JMBG:</h:outputLabel>
                <p:inputText id="searchJMBG" value="#{tdetail.jmbg}" disabled="#{not empty tdetail.id_master}"></p:inputText>

使用 ajax 并在更新属性中放置您要更新的组件 id 的空格分隔列表和disabled="#{not empty bean.property }"


推荐阅读