Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未捕获类型错误:无法调用方法';添加方法';jquery验证中未定义的_Jquery_Jquery Validate - Fatal编程技术网

未捕获类型错误:无法调用方法';添加方法';jquery验证中未定义的

未捕获类型错误:无法调用方法';添加方法';jquery验证中未定义的,jquery,jquery-validate,Jquery,Jquery Validate,您好,我正在使用jqueryjavascript库v1.10.2和jQuery验证插件1.11.1,并得到上述错误。 代码 其余代码用于jquery验证。上面的代码在$(文档)中。准备就绪并且在$(“#按钮”)中。单击 注意:我之前使用的是jqueryjavascript库v1.4.4,并升级到这些版本以使用jqueryvalidate。从早上开始我就被这件事缠住了。请帮助/建议 编辑: 这是完整的代码 $(document).ready(function () { OnPageLoad

您好,我正在使用
jqueryjavascript库v1.10.2
jQuery验证插件1.11.1
,并得到上述错误。 代码

其余代码用于jquery验证。上面的代码在
$(文档)中。准备就绪
并且在
$(“#按钮”)中。单击

注意:我之前使用的是
jqueryjavascript库v1.4.4
,并升级到这些版本以使用jqueryvalidate。从早上开始我就被这件事缠住了。请帮助/建议

编辑: 这是完整的代码

$(document).ready(function () {
    OnPageLoad();

    $("#ctl00_MainContentHolder_SubmitButton").click(function () {
        ValidatePage();
        if ($("#aspnetForm").valid()) {
            if (FormValidation()) {
                __doPostBack("Submit", "");
            }
        }
    });
});

function ValidatePage() {
    $.validator.addMethod("fnType", function (value, element) {
        if (element.value == "-1") { return false; } else {return true;}
    }, "Please select Type");

    $("#aspnetForm").validate({
        ignore:":hidden",
        rules: 
        {
            <%=Type.UniqueID %>: { required: true, fnType:true },
        }, 
        messages: 
        {
            <%=Type.UniqueID %>:{ required: "Type is required" },
        },
        errorPlacement: function(error, element) {
           error.appendTo('#ctl00_MainContentHolder_errorLabelTop');
        },
        wrapper: 'li'
    });
}
$(文档).ready(函数(){
OnPageLoad();
$(“#ctl00_MainContentHolder_SubmitButton”)。单击(函数(){
ValidatePage();
if($(“#aspnetForm”).valid(){
if(FormValidation()){
__doPostBack(“提交”、“提交”);
}
}
});
});
函数ValidatePage(){
$.validator.addMethod(“fnType”),函数(值,元素){
if(element.value==“-1”){return false;}else{return true;}
},“请选择类型”);
$(“#aspnetForm”).validate({
忽略:“:隐藏”,
规则:
{
:{required:true,fnType:true},
}, 
信息:
{
:{required:“类型是必需的”},
},
errorPlacement:函数(错误,元素){
错误.appendTo(“#ctl00_MainContentHolder_errorLabelTop”);
},
包装纸:“李”
});
}
在母版页中,我有相同的顺序

<script type="text/javascript" src="../Script/JQuery/jquery-1.10.2.js"></script>
<script type="text/javascript" src="../Script/JQuery/jquery.validate.js"></script>    
<script type="text/javascript" src="../Script/CustomScript/CustomScript.js"></script>

编辑:这是HTML代码

<table>
    <tr>
        <td colspan="2">
            <label id="errorLabelTop" runat="server" class="ResponseText"></label>
        </td>
    </tr>
    <tr>
        <td style="width:130px;">
            Scheme Type<span class="RedMainText" style="font-size:12px;"><sup>*</sup></span>
        </td>
        <td>
            <select id="schemeType" runat="server" class="InputText" >
            <option value="-1">--Select--</option>
            <option value="Home3">Home 3 Monthly</option>
            <option value="Home6">Home 6 Monthly</option>
            <option value="Practice3">Practice 3 Monthly</option>
            <option value="Practice6">Practice 6 Monthly</option>
            </select>
        </td>
    </tr>
</table>

方案类型*
--挑选--
家庭3个月
家庭6个月
每月练习3次
每6个月练习一次
您的代码:

rules: {
    <%=Type.UniqueID %>: { required: true, fnType:true },
}
HTML

<input name="myField" ...
对于重复调用,这些方法不会进入函数或
单击
处理程序内部。
点击
会被插件自动捕获这些方法仅用于初始化,因此在DOM就绪事件处理程序中调用它们一次

$(document).ready(function() {

    $.validator.addMethod( ....

    $("#aspnetForm").validate({ ....

显然,在断断续续地撞了一天脑袋之后,我发现了问题的根源。我的网页中有jquery
Datepicker
,我使用的是
jquery ui js/css v1.8.6
,而jquery文件是
v1.10.2
。这导致了冲突,在将
jqueryui
升级到
v1.10.3
后,上述错误不再存在。这意味着代码中没有错误。另一个需要注意的重要事项是,name属性对于jquery验证的元素是必须的。但是对于runat=“server”的元素,它们的id可以在jquery验证中以这种方式使用。所有这些都发生在母版页和内容页案例中


感谢您以注释和答案的形式提供的所有有用信息。

显示完整的JavaScript代码和HTML标记。@Sparky我已经编辑了提供代码的问题。
类型
的HTML是简单的HTML选择,带有
runat=server
如果呈现的HTML是那么简单,那么实际显示它就不会有问题。(这与您如何分配规则有关。)很抱歉,后面的逗号是我的错误,它不在原始代码中。但我很惊讶地知道,规则不能应用于输入的id,因为我在其他应用程序中有类似的位pages@hima,jQueryValidate插件可以以多种不同的方式分配规则,因此您可能还使用了内嵌HTML5验证,它可以选择这种方式。由于您拒绝显示呈现的HTML,我不知道。这是我的HTML代码:
--Select--Home 3 Monthly
@hima。。。按照之前的要求,将呈现的HTML代码编辑到您的OP中。如果没有
name
属性,插件将无法正常运行:我可以看到它在您提供的JSFIDLE中不起作用,但是我的代码只使用id。我从来没有给html/asp.net控件命名,直到现在一切似乎都很好。读者注意:这个答案包含严重的错误信息。您绝对不能在jQuery验证的
.validate()
方法中“安全地引用元素的id”查看此JSFIDLE,它清楚地表明您不能使用
id
.validate()
中声明规则:查看此JSFIDLE,它演示了OP可能在其页面上观察到的内容。请注意,除第一个字段外,所有字段上的验证都已中断:如果需要按
id
声明规则,则还有其他方法,但每个元素上仍必须具有唯一的
名称
属性。请看:@Sparky我仍然同意您所有的JSFIDLE示例,但我必须说我的代码只使用id。可能是母版页使其工作。如何在JSFIDLE中重现母版页场景。上面发布的代码与我的页面中相同id的代码完全相同。我已经编辑了我的问题以显示html代码。
<input name="myField" ...
function ValidatePage() {

    $.validator.addMethod( ....

    $("#aspnetForm").validate({ ....
$(document).ready(function() {

    $.validator.addMethod( ....

    $("#aspnetForm").validate({ ....