jquery validate valid()方法一直返回true

2025-03-10 13:02:55
推荐回答(2个)
回答1:

我也遇到了这个问题,我的验证方法是这样写的,这个验证方法没有问题~(写的有点长,答案在最后)
//验证重名
function NameValid() {
return $("#userForm").validate({
rules: {
UserName: {
remote: {
cache: false,
async: false,
url: "/UserManage/CheckUserName",
type: "post",
datatype: "json",
data: {
userName: function () {
return $("#UserName").val();
},
id: function () {
return $("#Id").val();
}
},
//dataFilter: function (data, type) { return data.result; }
}
}
},
messages: {
UserName: {
remote: "这个名字已经有人用过了"
}
}
});
}
然后哩,我调用他: if (NameValid().form()){
alert("重名验证返回为True了!")
}else{
alert("重名验证返回为False了!")
}
结果呢NameValid().form()一直为true,百思不得其解啊,就一直调试,结果发现NameValid()这个东东,他不等我控制器返回数据,就继续执行下去了(这个东东好像默认是true),为什么会这样呢?因为remote是异步执行的啊!异步验证!异步!所以现在要把它变成同步的,让他等待后台返回数据过来,再往下执行,综上所述,解决办法:给remote加上这两个参数(我在这里看到的:http://blog.csdn.net/w1014074794/article/details/39552715)

remote: {
cache: false,
async: false,
url: "/UserManage/CheckUserName",

回答2:

1.用其他方式替代默认的SUBMIT

复制代码代码如下:

$().ready(function() {
$("#signupForm").validate({
submitHandler:function(form){
alert("submitted");
form.submit();
}
});
});

使用ajax方式

复制代码代码如下:

$(".selector").validate({
submitHandler: function(form)
{
$(form).ajaxSubmit();
}
})