jQuery验证选项不适用 - MVC4

时间:2013-11-04 14:34:00

标签: jquery asp.net-mvc-4 jquery-validate jquery-validation-engine

我在MVC 4中进行不显眼的表单验证,我试图在弹出窗口而不是页面中显示错误。我正在测试showErrors和invalidHandler选项,但事件永远不会被触发。

当页面准备就绪时,这个js被调用来初始化验证器

$("form").validate({
    showErrors: function (errorMap, errorList) {
        console.warn(errorList);
    },
    invalidHandler: function (event, validator) {
        alert('test');
    }
});

当用户点击提交验证时,页面中会显示错误,但我在浏览器控制台中看不到任何内容,也没有显示警告弹出窗口。

当我检查验证器时,我发现在showErrors和invalidHandler的设置中有默认值,因此从未应用过选项。

$('form').validate().settings

帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

我曾经有类似的要求,我以前做的是从jquery弹出窗口添加一个js popup类,只将它添加到无效的元素。

如果您参考errorPlacement方法,则可以使用元素和错误变量。您可以在其中添加popup js类到元素。 方法errorPlacement仅根据您编写的验证规则调用无效的元素,此处您可以控制内联验证消息的显示位置以及弹出消息的位置。

答案 1 :(得分:0)

所以,这就是我解决问题的方法。

我认为MVC在我面前调用验证器,并且如果再次使用新选项调用它,插件将返回valitaror,因此选项永远不会应用于验证器设置。此外,我不想将我的设置应用于所有验证器,所以这里是。

//-- Validator settings. At this point this validator is already created (for me)
var $vlt = $('form').validate(); // Get validator

 var options = { //-- new options
            onfocusout: false, 
            onkeyup: false, 
            onclick: false,            
            showErrors: function (errorMap, errorList) {
                console.warn(errorList);
    }
 };

 $vlt.settings = $.extend(true, {}, $vlt.settings, options); // apply options

我将此脚本放在部分视图中的$().ready块上