$ .validator调用-jquery验证插件中忽略invalidHandler setDefault

时间:2012-07-23 12:53:54

标签: jquery jquery-ui jquery-validate

当我通过调用$ .validator setDefaults方法为jQuery Validation插件设置一些默认值时,errorPlacement方法运行正常,尽管invalidHandler函数完全被忽略了?为什么呢?

请注意,我在此实例中使用jQuery UI选项卡,并使用.valid()调用验证选项卡的各个字段(在表单中),而不是完整的.validate()调用。

非常感谢任何见解。

以下简化代码:

(function( $ ) {
    //det up some site wide validator defaults
    $.validator.setDefaults({
        invalidHandler: function(error, validator) {
            console.log("InvalidHandler Test");
        },
        errorPlacement: function(error, element) {
            error.appendTo("#error_validation span#errorSummary");
            $("#error_validation").show();
        }
    });
    //small jQuery plugin for error handling in a jQuery UI tab
    //by http://bit.ly/bhH1n1
    $.fn.validateTab = function () {
        var isValid = true;
        $(this).find("input, select").each(function () {
            if (isValid) {
                isValid = $(this).valid();
            } else {
                $(this).valid();
            }
        });
        return false;
    };


    $('#tabs').tabs();

    $('#addUserBtn').click(function (e) {
        e.preventDefault();
        $("#addUser").validateTab();
    });

});

1 个答案:

答案 0 :(得分:2)

我不确定为什么它不起作用但我需要它所以我自己修复它,如果你想将插件中的setDefaults替换为此

setDefaults: function (settings) {
    var validator = $.data($("form")[0], "validator");
    var originalSettings = jQuery.validator.getDefaults();
    for (var key in settings) {
        if (settings[key]) {
            originalSettings[key] = settings[key];
        }
    }
    validator.settings = $.extend(true, {}, $.validator.defaults, originalSettings);
},
getDefaults: function () {
    var validator = $.data($("form")[0], "validator");
    return validator.settings;
},