您好我正在使用jQuery JavaScript Library v1.10.2
和jQuery Validation Plugin 1.11.1
并收到上述错误。
代码
$.validator.addMethod("fnType", function (value, element) {
if (element.value == "-1") { return false; } else {return true;}
}, "Please select Type");
其余代码用于jquery验证。上面的代码位于$(document).ready
内,位于$("#button").click
内。
注意:我之前使用jQuery JavaScript Library v1.4.4
并升级到这些版本以使用jquery validate。我从早上开始坚持这个。请帮忙/建议。
编辑: 这是完整的代码
$(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'
});
}
在母版页中,我有相同的顺序
<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>
答案 0 :(得分:4)
您的代码:
rules: {
<%=Type.UniqueID %>: { required: true, fnType:true },
}
您无法将规则分配给id
的{{1}}。您必须仅使用input
属性分配它们。此外,如果您希望在旧版本的IE中使用它,请删除任何尾随逗号。
name
<强> HTML 强>:
rules: {
myField: {
required: true,
fnType: true
}
}
显示验证插件的演示无法与<input name="myField" ...
一起使用:http://jsfiddle.net/hmBjY/
演示,显示使用id
的验证插件:http://jsfiddle.net/NKCg9/1/
另外,您的代码:
name
对于重复调用,这些方法不会进入函数或function ValidatePage() {
$.validator.addMethod( ....
$("#aspnetForm").validate({ ....
处理程序。插件会自动捕获click
。 这些方法仅用于初始化,因此您在DOM ready事件处理程序中将它们称为一次 ...
click
答案 1 :(得分:-2)
显然我在打开和关闭一天之后发现了导致问题的原因。我的网页上有jquery Datepicker
,而jquery文件是jquery-ui js/css v1.8.6
,我正在使用v1.10.2
。这导致了冲突,将jquery-ui
升级为v1.10.3
后,上述错误不再存在。这意味着代码中没有错误。另一个需要注意的重要事项是,name属性是jquery验证元素必须的。但是对于具有runat =“server”的元素,它们的id可以这种方式使用&lt;%= yourid.UniqueID% &GT;在jquery验证中。所有这些都发生在母版页和内容页案例中。
感谢您以评论和答案的形式提供的所有有用的贡献。