阿罗哈!
尝试对邮政编码输入运行基本验证,并另外检查输入的值以查看它是否存在于无密钥JSON数组中。 一切都按预期工作,直到我添加远程功能。如果可能的话,我想利用这个功能,因为它是内置的,但我对其他验证方法持开放态度。
这方面的例子,没有远程,这里:http://jsfiddle.net/sangria/xLGae/
可能无关,但在提交时在控制台中收到此错误:
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
JSON数组格式:
[94102,94117,94110,99950,...]
jQuery和验证:
jQuery.validator.addMethod("postalcode", function(postalcode, element) {
return this.optional(element) || postalcode.match(/^([0-9]{5})$/);
}, "Please specify a valid postal/zip code");
$("#postal").validate({
rules: {
zipcode: {
required: true,
postalcode: true,
digits: true,
minlength: 5,
maxlength: 5,
remote: {
type: 'post',
contentType: 'application/json; charset=utf-8',
url: "data/uszipsonly.json",
dataType: 'json',
async: false
}
}
},
messages: {
zipcode: { remote: "Please specify a US postal code"}
}
});
仔细阅读文档和其他一些好的examples。在SO上找到类似的线程,但仍然有点绊倒。
非常感谢社区的任何启蒙。
答案 0 :(得分:1)
如果你正在使用jquery.bassistance.de,我想也许你错误地解释了远程功能的作用..
基本上远程只能在发送值后返回true / false,并且主要用于规则,如果你不希望将接受的值存储在客户端上,那么EVER(例如想想captcha)就像在这里{ {3}}
如果您想从您的服务器下载您的应用程序接受(或不接受)的可能邮政编码列表,我建议您执行以下操作:
$.getJSON("data/uszipsonly.json", function(response) {
var validZIP = response;
jQuery.validator.addMethod("postalcode", function(postalcode, element) {
return this.optional(element) || (postalcode.match(/^([0-9]{5})$/) && $.inArray(postalcode, validZIP));
}, "Please specify a valid postal/zip code");
})