我有一个带有两个单选按钮和两个相应文本框的网页。两者都是单一无线电组的一部分。该页面还有一个提交按钮。
o Radio1 [Textbox1] o Radio2 [Textbox2]
|提交|
当我选择Radio1并单击提交时,如果发生错误,则会显示验证错误消息。这些是gloabl错误消息,显示在页面顶部的所有字段。我使用了
的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()">
答案 0 :(得分:2)
您可以使用<f:ajax execute>
指定仅那些需要处理(并进行转换和验证)的字段。您可以使用<f:ajax render>
指定需要进行ajax更新的组件,在本例中为messages组件,以便使用新消息刷新它。
在文本框的<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>
答案 1 :(得分:0)
使用Prime Faces可以使用
您可以在以下链接中查看示例 http://www.primefaces.org/showcase/ui/misc/resetInput.xhtml