未捕获类型错误:无法调用方法';添加方法';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({ ....