我有一个使用非侵入式验证的 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;
}