检查远程电子邮件地址时,我遇到了jquery验证插件的问题。
远程函数返回一个JSON字符串,如:
"{ "isValid": "true", "email": "email@email.com" }"
我知道jquery验证中的默认设置应该只包含一个返回true或false的json字符串。但我需要返回已检查的电子邮件。
是否可以使用远程验证功能来检查json-property“isValid”?
谢谢,
詹姆斯·福特
答案 0 :(得分:3)
要处理来自自定义远程验证调用的响应,您必须创建自定义规则。在此示例中,我们将检查用户缺口是否可用。
jquery validation cutom rule:
$('#nick').rules("add", {
// nick is required
required: true,
// nick can have from 3 to 30 characters
rangelength: [3,30],
remote: {
url: "/your-api-url",
type: "GET",
data: {
// nick is id of input field from html
nick: function() {
// get user input from field value
return $('#nick').val();
}
},
// custom filtering response from api call
dataFilter: function(data) {
// we need to parse data string to json
var json = JSON.parse(data);
if(json.nick === "true" || json.nick === true) {
// jquery validate remote method
// accepts only "true" value
// to successfully validate field
return '"true"';
} else {
// error message, everything that isn't "true"
// is understood as failure message
return '"This nick is already taken."';
}
}
}
});
如果有可用的话,来自api的回复:
{nick:true}
HTML:
<input name="nick" id="nick" value="" placeholder="Nick" type="text" />
答案 1 :(得分:2)
您可以轻松扩展验证器插件。您所要做的就是使用$.validator.addMethod()
,添加一个进行远程调用的方法,获取您显示的JSON字符串,执行您需要返回电子邮件地址的任务,并在返回时返回true或false到验证流程。
这可能会有所帮助:http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage
答案 2 :(得分:2)
我认为您可以使用remote()作为源来编写自定义方法。像
这样的东西jQuery.validator.addMethod("customRemote", function(value, element, param) {
...
// the piece of code doing AJAX response parsing
success: function(response) {
validator.settings.messages[element.name].remote = previous.originalMessage;
// original:
var valid = response === true || response === "true";
// replace with your own logic
if(response.isValid == "true" && something == else) {
// do the stuff
}
...
})