jQuery Validation Plugin - 远程验证每个字段

时间:2014-06-28 17:32:18

标签: php jquery jquery-validate

我喜欢这个插件(http://jqueryvalidation.org/),但如果我想远程验证所有字段,我感到有限。我已经有了一个php验证类,想要使用它。

假设我有以下字段:

  • FNAME
  • L-NAME
  • 用户名
  • 电子邮件

并且假设我想远程验证整个表单...这样做似乎是多余的

$('#login form').validationOptions({
        rules: {
            "fname": {
                remote: {
                    url: 'process.php',
                    type: 'post',
                    dataType: 'json',
                    dataFilter: function(data) {
                        var json = JSON.parse(data);
                        console.log(json);
                        if (json.result === true) {
                            return true;
                        }
                        return '"' + json.message + '"';
                    }
                }
            },
            "lname": {
                remote: {
                    url: 'process.php',
                    type: 'post',
                    dataType: 'json',
                    dataFilter: function(data) {
                        var json = JSON.parse(data);
                        if (json.result === true) {
                            return true;
                        }
                        return '"' + json.message + '"';
                    }
                }
            },
           ........etc......
        },
    });

我是否可以告诉插件远程验证整个表单,而不必每次都在js或远程规则和url中声明每个字段...类似......

$('#login form').validationOptions({
        remote: {
            url: 'process.php',
            type: 'post', //All form fields should be posted
            dataType: 'json',
            dataFilter: function(data) {
                var json = JSON.parse(data);
                console.log(json);
                if (json.result === true) {
                    return true;
                }
                return '"' + json.message + '"';
            }
        },
});

我知道代码不会像我写的那样工作,但你应该让我的漂移。是的,我知道我可以使用ajax post来做这个,并使用成功回调来做我需要的东西但是我使用一个有插件的模板并且很好地工作想要使用他们已经拥有的东西我希望的改变是完整地远程验证表单,而不是声明每个字段和远程规则。

1 个答案:

答案 0 :(得分:1)

引用OP:

  

"有没有[方法]我可以告诉插件远程验证整个表单,而不必每次都在js或远程规则和url中声明每个字段......&# 34;

     

" ...验证......而不声明每个字段和远程规则。"

如果remote规则声明的每个字段都有相同的选项,那么是的,有一种更简单的方法可以在每个字段上声明它。假设您的remote规则已经有效,请使用.rules()方法,如下所示......

$('input[type="text"]').each(function() {
    $(this).rules('add', {
        remote:  {
            // your remote options
        }
    });
});
  • 使用$('input[type="text"]')定位text中的所有input form元素。否则,请使用您需要的任何选择器以定位相关字段。

  • 使用jQuery .each().rules()方法应用于选择器所定位的元素组中的每个元素。 .each()方法是一种绕过插件限制的方法,当它附加到表示一组元素的jQuery选择器时,忽略除第一个元素之外的每个元素。

  • 您仍然必须调用.validate()方法(包含任何其他选项),以便在form上初始化插件。

  • 不确定您是否需要dataType和/或dataFilter选项。默认类型为JSON,发送的数据是要评估的字段的值。如果您从PHP返回echo一个JSON字符串,该字符串将成为错误消息。