jQuery使用自定义操作验证添加规则

时间:2016-05-12 09:20:33

标签: jquery jquery-validate

我正在向jQuery验证表单动态添加规则。此规则是动态添加的,因为字段名称包含变量。这是代码。

$('#message_' + default_language_id + '_0').rules('add', {
    required: true,
    messages: {
        required: "something is wrong."
    }
}); 

我希望此规则在验证表单时使用匿名函数执行操作。但是,如果没有在文档准备好的情况下执行函数,我无法找到一个选项/方法来执行此操作。

这是一个扩展的代码段,可以将其置于更多上下文中:

$(document).ready(function(){
var default_language_id = $("#default_language_id").val();

var validator = $("#message_form").submit(function() {
tinyMCE.triggerSave();

}).validate({   
    ignore: "",
    rules: {
        publish_date: {
            check_publish_date: true,
            check_expiry_date: true
        },
        expiry_date: {
            check_expiry: true,
        }
    },

    errorElement: "span",
    errorClass: "help-block",
    highlight: function (element, errorClass, validClass) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function (element, errorClass, validClass) {
        $(element).closest('.form-group').removeClass('has-error');
    },
    errorPlacement: function (error, element) {
        if (element.parent('.input-group').length || element.prop('type') === 'checkbox' || element.prop('type') === 'radio') {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});

$('#message_' + default_language_id + '_0').rules('add', {
    required: true,
    messages: {
        required: "something is wrong"
    },
});

所以,我最终想要的是这样的事情(这不起作用):

$('#message_' + default_language_id + '_0').rules('add', {
    required: true,
    messages: {
        required: "something is wrong."
    },
    onsubmit: function(){
        alert("I am only triggered when the form errors on this rule");
    }
}); 

有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

解决方案是:

$('#message_' + default_language_id + '_0').rules('add', {
    my_new_rule: true
});

$.validator.addMethod("my_new_rule", function(value, element) {

    // My rule

}, "something went wrong");