【发布时间】:2014-03-11 11:29:57
【问题描述】:
我正在使用 jQuery 1.7.2 和 jQuery 验证 1.8.2 我添加了 ajax,我检查响应所有正确的值也传递正确,但我仍然没有得到验证。这是我的代码
<script type="text/javascript">
$(document).ready(function () {
var validator = $("#form1").validate({
rules: {
ctl00$ContentPlaceHolder$txCivilID: {
required: true,
rangelength: [12,12],
digits: true,
checkCivilID: true
},
ctl00$ContentPlaceHolder$txFirstName: {
required: true
},
ctl00$ContentPlaceHolder$txLastName: {
required: true
},
ctl00$ContentPlaceHolder$txMobile: {
required: true,
rangelength: [8,8],
digits: true
},
ctl00$ContentPlaceHolder$dpUserType: {
required: true
}
},
messages: {
ctl00$ContentPlaceHolder$txCivilID: {
required: "Civil for is required!",
rangelength: "Civil for should be {0} in length!",
digits: "Civil for should be only numbers!"
},
ctl00$ContentPlaceHolder$txFirstName: "First Name is required!",
ctl00$ContentPlaceHolder$txLastName: "Last Name is required!",
ctl00$ContentPlaceHolder$txMobile: {
required: "Mobile number is required!",
rangelength: "Mobile number should be {0} in length!",
digits: "Mobile number should be only numbers!"
},
ctl00$ContentPlaceHolder$dpUserType: "Select User Type !"
},
errorPlacement: function (error, element) {
$('label[for="' + element.attr("id") + '"]').text(error.text());
}
});
jQuery.validator.addMethod("checkCivilID", function (value, element) {
var response = '';
$.ajax({
url: "CivilID.aspx/IsAlreadyAvailable",
type: "POST",
async: false,
data: "{'civilID':'" + value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
return data.d == 0 ? true : false;
}
});
}, "CivilID is Already Exists");
});
</script>
我将 addMethod 更改为远程方法,现在我的代码如下所示,但它仍然相同:(
<script type="text/javascript">
$(document).ready(function () {
var validator = $("#form1").validate({
rules: {
ctl00$ContentPlaceHolder$txCivilID: {
required: true,
rangelength: [12,12],
digits: true,
remote: function () {
var value = $('#<%=txCivilID.ClientID%>').val();
var r = {
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ civilID: value }),
type: "POST",
dataType: "json",
url: "CivilID.aspx/IsAlreadyAvailable",
//async: false,
dataFilter: function (data) { return $.parseJSON(data).d }
};
return r;
}
},
ctl00$ContentPlaceHolder$txFirstName: {
required: true
},
ctl00$ContentPlaceHolder$txLastName: {
required: true
},
ctl00$ContentPlaceHolder$txMobile: {
required: true,
rangelength: [8,8],
digits: true
},
ctl00$ContentPlaceHolder$dpUserType: {
required: true
}
},
messages: {
ctl00$ContentPlaceHolder$txCivilID: {
required: "Civil for is required!",
rangelength: "Civil for should be {0} in length!",
digits: "Civil for should be only numbers!",
remote:"CivilID is Already Exists"
},
ctl00$ContentPlaceHolder$txFirstName: "First Name is required!",
ctl00$ContentPlaceHolder$txLastName: "Last Name is required!",
ctl00$ContentPlaceHolder$txMobile: {
required: "Mobile number is required!",
rangelength: "Mobile number should be {0} in length!",
digits: "Mobile number should be only numbers!"
},
ctl00$ContentPlaceHolder$dpUserType: "Select User Type !"
},
errorPlacement: function (error, element) {
$('label[for="' + element.attr("id") + '"]').text(error.text());
}
});
/*jQuery.validator.addMethod("checkCivilID", function (value, element) {
var response = '';
$.ajax({
url: "CivilID.aspx/IsAlreadyAvailable",
type: "POST",
async: true,
data: "{'civilID':'" + value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
return data.d == 0 ? true : false;
}
});
}, "CivilID is Already Exists");*/
});
</script>
【问题讨论】:
-
alert(data.data)会是什么结果? -
对不起,它是 data.d,当它已经存在时我得到 0,当它不存在时得到 1
-
@ArunPJohny 你的 jsfiddle 出错了
-
既然可以使用
remote规则,为什么还要为此使用自定义方法?
标签: jquery asp.net jquery-validate