1

我在 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

帮助表示赞赏。

4

2 回答 2

1

我曾经有过类似的要求,我以前做的是从 jquery popups 中添加一个 js popup 类,并且只将它添加到无效的元素中。

如果您参考 errorPlacement 方法,则可以使用元素和错误变量。您可以将弹出 js 类添加到那里的元素。仅根据您编写的验证规则对无效的元素调用 errorPlacement 方法,在这里您可以控制内联验证消息出现的位置以及弹出消息的出现位置。

于 2013-11-04T14:43:18.687 回答
0

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

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

//-- 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部分视图中的块上

于 2013-11-04T20:10:14.490 回答