我尝试使用带有ASP.net webforms CustomValidator的jQuery AJAX验证有关模糊的电子邮件文本框。
<asp:TextBox ID="Email" runat="server" ClientIDMode="Static">
<asp:CustomValidator ID="EmailRegisteredValidatation" ControlToValidate="Email" runat="server"
ValidationGroup="RegisterUserValidationGroup" ClientValidationFunction="CheckEmailRegistration"
ErrorMessage="Email Already Registered"></asp:CustomValidator>
function CheckEmailRegistration(sender, args)
{
$.post("/api/CheckEmailRegistration/", { Email: $("#Email").val() })
.done(function (data) {
args.IsValid = data;
});
}
该脚本不起作用。它不会改变验证状态。我肯定知道返回的数据是true还是false。但我猜测AJAX结果的延迟导致了问题。
这样可行:
function CheckEmailRegistration(sender, args)
args.IsValid = false;
}
这也不起作用:
function CheckEmailRegistration(sender, args)
{
$.post("/api/CheckEmailRegistration/", { Email: $("#Email").val() })
.done(function (data) {
args.IsValid = false; //even hardcoded doesn't work
});
}
在范围之外也不起作用:
function CheckEmailRegistration(sender, args)
{
var _value;
$.post("/api/CheckEmailRegistration/", { Email: $("#Email").val() })
.done(function (data) {
_value = data;
}
});
args.IsValid = _value;
}
有什么想法吗?
谢谢