jQuery Validation插件规则到特定表单

时间:2013-09-14 12:59:22

标签: javascript jquery forms jquery-validate

我正在使用jQuery Validation plugin来验证我的表单。现在我想验证我网站上的每个表单。这有效:

$('form').validate({
    <?php echo $translation["validation_lang"];?>
    errorPlacement: function (error, element) {
        $(element).tooltipster('update', $(error).text());
        $(element).tooltipster('show');
    },
    success: function (label, element) {
        $(element).tooltipster('hide');
    }
});

我正在使用Tooltipster来显示相应字段旁边的错误。再次,这可行PHP - 中的字符串可选择加载语言包。

现在,我的网站上还有其他需要其他规则的表单。例如,注册表应检查用户名可用性,检查用户名有效性(长度,字符,......)等。

$('#registerForm').validate({
    rules: {
        username: {
            minlength: 3,
            maxlength: 50
        },
        password1:  {
            minlength: 5
        },
        password2:  {
            minlength: 5,
            equalTo: "#password1"
        },
        email: {
            remote:{
                url: "getContent.php",
                type: "post",
                data: {
                    type: "checkMail"
                }
            }
        },
        username:   {
            remote: {
                url: "getContent.php",
                type: "post",
                data:   {
                    type: "checkUser"
                }
            }
        }
    },
    messages:   {
        email:  {
            remote: "<?php echo $translation["already_registered"][0];?>"
        },
        username:   {
            remote: "<?php echo $translation["already_registered"][1];?>"
        }
    }
});

在同一页面上拥有这两个代码段不起作用。如果将上面的代码正文(因此rulesmessages)放在最初的$('form').validate({内,而不是它自己的$('#registerForm').validate({,那么它确实有效。我似乎无法在任何地方找到如何为特定表格添加某些规则,同时保持所有表格的“一般”规则。

简而言之:如何在保留一般表单规则的同时,将规则/消息/ submitHandlers添加到具有特定ID的特定表单中?

1 个答案:

答案 0 :(得分:1)

您可以使用setDefaults方法定义常见的验证内容: http://jqueryvalidation.org/jQuery.validator.setDefaults/

示例:

$.validator.setDefaults({
    errorPlacement: function (error, element) {
    $(element).tooltipster('update', $(error).text());
    $(element).tooltipster('show');
},
    success: function (label, element) {
    $(element).tooltipster('hide');
}
});

jsFiddle - 为所有表单设置错误元素为“em”。