禁用/启用 primefaces keyFilter

Disable / Enable primefaces keyFilter

我有一个 keyFilter p:inputMask 我想禁用和启用 keyFilter

<div class="col-sm-6 #{(newDesWeb eq '_')?'input-group' : ''} errorCible"  >
                <p:inputMask  inputStyleClass="#{(newDesWeb eq '_')? 'selectfile' : 'form-control lg200 input-sm'}  errorCible"
                    id="zoneResidenceAssure" styleClass="#{(newDesWeb eq '_')? 'ng-pristine ng-invalid ng-touched' : ''}  errorCible"
                    style="width: 100%"
                    value="#{devisPresBean.currentAssureDevisBean.adresseActuelle.zipCode}" maxlength="#{msg['form.control.input.codepostal.maxlength']}">
                    <c:passThroughAttribute name="fieldId" value="LIBDEVzoneResidenceAssure" />
                    <c:ajax onevent="displayAjaxSatus" event="change" execute="@this" render="@this" />
                </p:inputMask>
                <p:keyFilter regEx="/[0-9_]/i" for="zoneResidenceAssure" />
                <bpsi:message for="zoneResidenceAssure" />
                 
            </div>

我想有条件地禁用 p:keyFilter

您可以通过 3 种方式执行此操作:

  1. <p:keyFilter regEx="/[0-9_]/i" for="zoneResidenceAssure" rendered="#{backing.condition()}"/> 上使用渲染,但随后您需要更新 keyFilter 的容器,无论是表单还是面板条件更改。

  2. 使用像 <p:keyFilter regEx="#{backing.regex()}" for="zoneResidenceAssure" /> 这样的动态正则表达式,并在每次条件更改时更新 keyFilter,如果您希望启用它则返回实际模式,或者返回空字符串以禁用它。

  3. keyFilter 上使用 testFunction 而不是 regEx 并将 JavaScript 中的条件作为测试函数实现。