我正在使用这个 jQuery 验证插件,http://jqueryvalidation.org/我正在创建一个添加方法,如下所示。
jQuery.validator.addMethod('exists', function(value, element) {
$.ajax({
data: {username: value},
type: 'POST',
url: 'action/check/',
dataType: 'json',
success: function(data) {
if (data==true) {
console.log(data);
return true;
}
if (data==false) {
console.log(data);
return false;
}
}
})
}, 'This username is already in use');
我的控制台正在从检查脚本中获取正确的数据,在我的控制台中我可以看到 true 和 false 等。但我不明白的是验证标志似乎会标记输入,无论输入是什么。
rules: {
password_confirm: {
equalTo: 'input[name=password]'
},
username: {
exists: true
}
}
我的数据库中已经有用户名 chris
,因此当我在用户名输入中输入 chris
时,我应该会得到一个重复用户的标志,但无论什么输入我得到验证标志。
我错过了什么
最佳答案
您的验证将不起作用,因为它是异步的(ajax 请求)。
您可以使用现有的 remote rule为此,请确保您的请求返回 true/false 作为其结果
rules: {
password_confirm: {
equalTo: 'input[name=password]'
},
username: {
remote: {
url: 'action/check/',
type: 'POST'
}
}
}
关于javascript - jQuery 验证器附加方法未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076754/