2

当我通过调用 $.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();
    });

});
4

1 回答 1

3

我不太确定为什么它不起作用,但我需要它,所以我自己修复了它,如果你想将插件中的 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;
},
于 2014-06-23T14:56:47.247 回答