为什么自定义验证器在文档中不起作用.请准备好jQuery

Why Custom Validator doesnt work in the document.ready of jQuery

本文关键字:不起作用 准备好 jQuery 文档 自定义 验证 为什么      更新时间:2023-09-26

我调用了一个函数,打开了我的自定义验证器。NET:

<asp:CheckBox ID="chbNota" runat="server" />
<asp:CustomValidator ClientValidationFunction="RequiredPrivacy" Runat="server" ID="cvPrivacy" onservervalidate="CustomValidatorchkPrivacy_ServerValidate" >&nbsp;*</asp:CustomValidator>

现在,如果我将函数声明为$(document).ready(function):

$(document).ready(function() {
    function RequiredPrivacy(oSrc, args) {
        if (!$('#<%=chbNota.ClientID%>').prop("checked")) args.IsValid = false;
    }
});

客户端的整个Validator变为true。

为什么会有这种行为?如果我把这个函数从$(document).ready(function)中移出,所有函数都能完美地工作。。。

当您在"ready"处理程序中定义函数时,它在全局范围中是隐藏的。换句话说,它就像一个只用于处理程序函数的局部变量。

不需要定义在"就绪"处理程序中全局可见的函数。然而,如果你真的想这样做,你可以这样做:

$(document).ready(function() {
    window['RequiredPrivacy'] = function(oSrc, args) {
        if (!$('#<%=chbNota.ClientID%>').prop("checked")) args.IsValid = false;
    }
});
函数必须在全局命名空间中声明。当您将函数放置在$(document).ready中时,它会确定函数的范围,并阻止内置的CustomValidator javascript挂钩查找该函数。