我有一个使用不引人注意的验证的MVC4项目,但是对于一个部分我使用的是knockoutjs。
我已经设置了淘汰赛以使用jquery验证插件,但是当我调用$(“form”)。valid()时,它的行为不符合预期。
我在表单中渲染一个表,该表将有几行进行验证。应该在验证中忽略表的第一行,并将其用于向列表中添加新对象。我在第一行给出了每个对象一类“firstRow”
我已经设置了验证器
var validator = $("form").validate({
ignore: ".firstRow"
});
但是当我打电话时
$("form").valid()
我注意到所有无效的元素(包括第一行)都添加了“input-validation-error”类。
首先,我希望第一行会被忽略。
其次我不希望应用这个类,因为这是不显眼的验证。我希望将类“错误”应用于jquery验证插件。
当我排除对jquery.validation.unobtrusive.js的引用时,一切正常,但我不能这样做,因为它需要网站的其余部分。
我认为这是从jquery.validation.unobtrusive以某种方式执行的代码,但我想知道如何阻止它执行?
function validationInfo(form) {
var $form = $(form),
result = $form.data(data_validation),
onResetProxy = $.proxy(onReset, form);
if (!result) {
result = {
options: { // options structure passed to jQuery Validate's validate() method
errorClass: "input-validation-error",
errorElement: "span",
errorPlacement: $.proxy(onError, form),
invalidHandler: $.proxy(onErrors, form),
messages: {},
rules: {},
success: $.proxy(onSuccess, form)
},
attachValidation: function () {
$form
.unbind("reset." + data_validation, onResetProxy)
.bind("reset." + data_validation, onResetProxy)
.validate(this.options);
},
validate: function () { // a validation function that is called by unobtrusive Ajax
$form.validate();
return $form.valid();
}
};
$form.data(data_validation, result);
}
return result;
}
答案 0 :(得分:0)
我最终拆分捆绑包并将jquery.validator文件放在一起,将不显眼的文件放在另一个捆绑包中。
然后在我的布局文件中,我使用Viewbag检查是否应该包含不显眼文件的包。
默认情况下,除非Viewbag.ExcludeUnobtrusive == true,否则它将包含在我不希望不引人注意的脚本引用的页面中设置。
布局文件
@{
var includeUnobtrusive = ViewBag.ExcludeUnObtrusive == null || ViewBag.ExcludeUnObtrusive == false;
}
....
....
@if (includeUnobtrusive)
{
@Scripts.Render("~/bundles/jqueryunobtrusive")
}