1

我有一个带有两个单选按钮和两个相应文本框的网页。两者都是单个无线电组的一部分。该页面还有一个提交按钮。

o Radio1 [Textbox1] o Radio2 [Textbox2]

|提交|

当我选择 Radio1 并单击提交时,如果发生错误,则会显示验证错误消息。这些是出现在所有字段页面顶部的全局错误消息。我使用了 validatorMessage 属性

<h:inputText> 

显示错误和

<f:validateRegex pattern="(^[0-9]{1,15}$)" /> 

验证错误。我也有

<h:messages class="errors"  style="color:red;" layout="table" />

在 xhtml 页面的顶部。

我的要求是,当我单击 Radio2 时,我需要 Radio1 的错误消息消失,因为它们与 Radio2 无关。反之亦然。

有没有办法在选择 Radio2 时使用 AJax 或 JS 清除 Radio1 的错误消息?

用无线电代码更新:

<t:selectOneRadio id="options" value="#{reqscope.selectedRadio}" layout="spread">
    <f:selectItem itemValue="radio1" itemLabel="Policy number" />
    <f:selectItem itemValue="radio2" itemLabel="Customer ID" />    
</t:selectOneRadio>

<t:radio for="options" index="0"  name="search_by1" onclick="searchSelected()">
4

2 回答 2

2

您可以使用<f:ajax execute>指定需要处理(并因此转换和验证)的那些字段。您可以使用指定需要进行 ajax 更新的组件,在这种情况下是消息组件,以便使用新消息刷新它。<f:ajax render>

<f:validateRegex>文本框上,disabled只要所选单选按钮值与预期值不匹配,您就可以使用属性禁用验证。

以下示例应该这样做:

<h:messages id="messages" ... />

<h:form id="form">
    ...
    <t:selectOneRadio id="options" ...>
        ...
        <f:ajax execute="@this textbox1 textbox2" render=":messages" />
    </t:selectOneRadio>
    ...
    <h:inputText id="textbox1" ...>
        <f:validateRegex ... disabled="#{param['form:options'] != 'radio1'}" />
    </h:inputText>
    <h:inputText id="textbox2" ...>
        <f:validateRegex ... disabled="#{param['form:options'] != 'radio2'}" />
    </h:inputText>
    ...
</h:form>
于 2013-08-08T15:01:29.610 回答
0

使用 Prime Faces,您可以使用

您可以在以下链接中查看示例 http://www.primefaces.org/showcase/ui/misc/resetInput.xhtml

于 2016-06-08T21:11:16.433 回答