【发布时间】:2010-10-06 23:21:30
【问题描述】:
我正在处理一个包含一系列复选框的页面,必须至少选中一个复选框。
当我单击提交按钮时验证器会触发,如果没有选中任何复选框,则表明验证失败。但是,如果我选中其中一个复选框,则验证消息不会消失,直到我再次单击提交按钮。
如果我在指定了 ControlToValidate 的控件上使用它并修复了验证问题,则错误消息会立即消失。
但是在这种情况下,由于需要验证几个独立的控件,我没有设置 ControlToValidate。
所以我的问题是我可以重新验证自定义验证器吗?例如,我想在每个复选框上添加一个 onclick="revalidate()" ,然后强制验证再次发生。
这是我为演示该场景而编写的一些示例代码。
<script type="text/javascript">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
function IsOneCheckboxChecked(sender, args) {
if (!$('[id$=checkBox1]').attr('checked') &&
!$('[id$=checkBox2]').attr('checked')) {
args.IsValid = false;
}
else {
args.IsValid = true;
}
}
</script>
<asp:CheckBox ID="checkBox1" runat="server" />
<br />
<asp:CheckBox ID="checkBox2" runat="server" />
<br />
<asp:CustomValidator ID="customValidatorMustBeOnCheckboxChecked"
runat="server" ClientValidationFunction="IsOneCheckboxChecked"
ErrorMessage="You must select at least one checkbox option"
OnServerValidate="customValidatorMustBeOnCheckboxChecked_ServerValidate" />
<br />
<br />
<asp:Button ID="buttonSubmit" runat="server" Text="Submit" />
【问题讨论】:
-
在您的 CustomValidator 标签中,您是否尝试过包含 Display="Dynamic" ?
-
显示仅确定错误消息的位置是静态的还是动态的。但是,我继续尝试了您的建议,但没有任何作用。