我使用jquery验证插件。
在我的表格中,我需要检查昵称是否已被使用。
为此他们提供remote
密钥来进行ajax调用。对我来说,ajax调用正在运行
正确并返回true或false。但即使返回的值为false,它也允许
这应该不会发生。
我的验证码如下,
$(function() {
$("#myform").validate({
rules: {
fullName: {
required: true,
minlength: 5
},
nickName: {
required: true,
minlength: 4,
alphaNumeric: true,
remote: {
url: "NickNameChecker",
type: "post",
data: {
nickName: function() {
return $("#nickName").val();
}},
success: function(data) {
return data;
}
}
}
},
messages: {
fullName: {
required: "Please Enter Your Full Name.",
minlength: "Full Name should have minimum 5 letters."
},
nickName: {
required: true,
minlength: "Nick Name should contain minimum 4 letters.",
remote: "This nickname is already in use."
}
}
});
});
任何建议都会很有意义!!!
谢谢!
解决方案:
解决方案仅在我的代码中。
我刚刚删除了成功部分并尝试了。它工作得很好!
答案 0 :(得分:1)
(上述评论的扩展说明):
success
选项对jQuery validate的远程验证无效。您应该只能指定一个URL来访问验证,该验证返回true或错误的值/错误消息:
通过调用服务器端资源 $ .ajax(XMLHttpRequest)并得到一个 键/值对,对应于 已验证元素的名称及其名称 value作为GET参数。响应 被评估为JSON,必须为true 对于有效元素,可以是任何元素 false,undefined或null表示无效 元素,使用默认消息; 或字符串
有关如何使用该选项的详细信息,请参阅documentation for remote。您的代码可能看起来像这样:
$(function() {
$("#myform").validate({
rules: {
fullName: {
required: true,
minlength: 5
},
nickName: {
required: true,
minlength: 4,
alphaNumeric: true,
remote: {
url: "NickNameChecker",
type: "post",
data: {
nickName: function() {
return $("#nickName").val();
}
}
}
},
messages: {
fullName: {
required: "Please Enter Your Full Name.",
minlength: "Full Name should have minimum 5 letters."
},
nickName: {
required: true,
minlength: "Nick Name should contain minimum 4 letters.",
remote: "This nickname is already in use."
}
}
});
});
答案 1 :(得分:1)
jQuery Validation团队建议另一种处理非布尔API的方法in this GitHub issue。
提出的方法利用了jQuery.ajax()的dataFilter属性。
form.validate({
rules: {
username: {
required: true,
remote: {
url: "users2.json.php",
dataFilter: function(data) {
var json = JSON.parse(data);
if(json.status === "success") {
return '"true"';
}
return "\"" + json.error + "\"";
}
}
}
}
});