我有一份学校作业,其中两个文本框必须相同,与使用比较验证器完全相同,但我们 使用自定义验证器。
到目前为止我使用的代码是:
protected void CustomValidator1_ServerValidate1(object source, ServerValidateEventArgs args)
{
if (TextBox2.Text == TextBox3.Text)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
并在ASP.NET中
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage="The second and third haven't got the same input."
onservervalidate="CustomValidator1_ServerValidate1"
ValidateEmptyText="True" ValidationGroup="Custom"></asp:CustomValidator>
但是当我调试webform时,当我填写两个不同的输入时,没有任何显示。
答案 0 :(得分:2)
在您尝试将表单提交到服务器之前,不会验证控件;一旦编辑,它们就不会被验证。
您可以将AutoPostback
指定为true
,以便在每次编辑文本框时将表单提交给服务器,但这可能会导致其自身的一组问题。
要在客户端上完全验证表单,而不发布到服务器,您需要自己编写JavaScript代码,而不是自定义验证器。
答案 1 :(得分:1)
要使用CustomValidator启用客户端(在回发之前)验证,您必须将ClientValidationFunction设置为某些JavaScript。
类似的东西:
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage="The second and third haven't got the same input."
onservervalidate="CustomValidator1_ServerValidate1"
ClientValidationFunction="CustomValidator1_ClientValidate1"
ValidateEmptyText="True" ValidationGroup="Custom"></asp:CustomValidator>
<script type="text/javascript">
function CustomValidator1_ClientValidate1(source, arguments) {
if (/* validation code */) {
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
</script>