Validator远程方法,匹配JSON数组的值

时间:2011-08-11 23:38:05

标签: jquery json validation

阿罗哈!

尝试对邮政编码输入运行基本验证,并另外检查输入的值以查看它是否存在于无密钥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上找到类似的线程,但仍然有点绊倒。

非常感谢社区的任何启蒙。

1 个答案:

答案 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");

})