JQuery验证包括动态规则

时间:2014-06-13 14:37:00

标签: javascript jquery jquery-validate

我正在寻找一种动态包含jquery验证规则的方法,因为我需要在不同的地方使用它们。

用户可以通过两种方式编辑新闻。第一种方法是使用jquery验证的常用表单。这没问题,一切正常。 但我也想在不重复规则的情况下使用jedery验证和jeditable。

所以目前我有这样的NewsValidator.js:

$("form").validate({

rules: {
        title: {
                required: true,
        rangelength:[3,50],
                },
        content: {
                required: true,
                rangelength: [25, 250]
                }
        },
});

我的可编辑字段的代码如下所示:

$('.edit').editable('http://localhost/news/ajax', { 
        'id': 'news_id',
        'name':'title',
        'method': 'put',
        submitdata : {
                        _method: "PUT",
                        content: $("div.content").text(),

                    },

 error: function(){
    alert('Something went wrong');
 },
 onsubmit: function(settings, td) {
    $.getScript('../../js/validation/NewsValidator.js'); //-> this is not working (unexspected ) )

}

});

那么有没有人知道如何在onsubmit函数中使用我的验证器而不用复制和粘贴来保持干燥?

提前致谢。

1 个答案:

答案 0 :(得分:1)

引用OP

  

"我正在寻找一种动态包含jquery验证规则的方法"

动态添加,更改或删除规则的唯一方法是使用the .rules() methods

.rules('add')动态添加新规则或覆盖现有规则。

.rules('remove')动态删除现有规则。

<强>实施例

$('#myField').rules('add', {  // <- a single field
    required: true, 
    digits: true
});

$('.manyFields').each(function() {  // <- multiple fields at once needs '.each()'
    $(this).rules('add', {
        required: true, 
        digits: true
    });
});

$('#myField').rules('add', {  // <- a single field with custom messages
    required: true, 
    digits: true,
    messages: {
        required: "this field is mandatory",
        digits: "this field can only contain digits"
    }
});

修改

.validate()方法用于初始化表单上的插件。它在DOM上调用一次,准备初始化表单上的插件,并忽略任何后续调用。换句话说,即使您想要,也不能重复.validate()。这就是为什么开发人员提供诸如.rules('add')之类的方法来动态操作设置的原因。

由于实际上不可能重复.validate()方法,因此您重复使用任何代码都完全不清楚。