我有一个表单,其中的元素可能包含在折叠的折叠式div中。当有人提交表单并且不显眼的验证器在一个或多个这些“隐藏”表单元素上捕获错误时,我希望折叠的手风琴打开,以便他们可以看到他们的错误。
在做了一些研究之后,我在这里找到了一个建议Using unobtrusive validation in ASP.NET MVC 3, how can I take action when a form is invalid?,它说要制作我自己不引人注意的适配器。所以我做到了,就在这里:
$.validator.unobtrusive.adapters.add(
'collapsevalidation',
function () {
var tabs = $('.collapse').not('.in');
//console.log("tabs.length: " + tabs.length);
$(tabs).each(function () {
if ($(this).has('.field-validation-error').length) {
id = "#" + $(this).attr('id');
//console.log("id: " + id);
$("[data-target='" + id + "']").collapse('show');
}
});
}(jQuery的));
适配器插件已添加到我的页面,现在我正在试图弄清楚如何“挂钩”但我似乎无法这样做。到目前为止,我已将以下内容添加到我的页面中:
jQuery.validator.unobtrusive.adapters.add("collapsevalidation");
但这似乎不起作用。当我在提交时产生错误时,console.log行不写。
我知道这是一个自定义适配器,因为它不适用于特定元素,也不会返回任何内容,例如bool。
请有人帮忙完成此操作。谢谢!
答案 0 :(得分:1)
虽然我没有直接找到上述答案,但我确实使用以下内容得到了我想要的结果:
$("form").bind("invalid-form.validate", function () {
//My code here
}