我在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
帮助表示赞赏。
答案 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
块上