jquery验证插件无法使用不引人注目的js引用

jquery验证插件无法使用不引人注目的js引用,jquery,validation,knockout.js,unobtrusive,Jquery,Validation,Knockout.js,Unobtrusive,我有一个MVC4项目,它使用的是不引人注目的验证,但有一部分我使用的是knockoutjs 我已经安装了knockout来使用jquery验证插件,但是当我调用$(“form”).valid()时,它的行为并没有达到预期 我在表单中呈现了一个表,其中有几行需要验证。验证时应忽略表的第一行,该行用于向列表中添加新对象。我给了第一行中的每个对象一个“firstRow”类 我已经设置了验证程序 var validator = $("form").validate({ i

我有一个MVC4项目,它使用的是不引人注目的验证,但有一部分我使用的是knockoutjs

我已经安装了knockout来使用jquery验证插件,但是当我调用$(“form”).valid()时,它的行为并没有达到预期

我在表单中呈现了一个表,其中有几行需要验证。验证时应忽略表的第一行,该行用于向列表中添加新对象。我给了第一行中的每个对象一个“firstRow”类

我已经设置了验证程序

var validator = $("form").validate({
                ignore: ".firstRow"
            });
但是当我打电话的时候

$("form").valid()
我注意到所有无效的元素(包括第一行)都添加了类“InputValidationError”

首先,我希望第一行会被忽略

其次,我不希望应用这个类,因为这样做是不引人注目的验证。我希望类“error”将应用于jquery验证插件之外

当我排除对jquery.validation.unobtrusive.js的引用时,一切都正常,但我不能这样做,因为这是站点其余部分所需要的

我认为这是以某种方式从jquery.validation.Untrusive执行的代码,但我想知道如何阻止它执行

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;
}

最后,我将这些包分开,将jquery.validator文件放在一起,将不引人注目的文件放在另一个包中

然后,在我的布局文件中,我使用Viewbag检查是否应该包括不引人注目的文件包

默认情况下,它将包括then,除非Viewbag.ExcludeUnobtrusive==true,这将在我不希望使用不引人注目的脚本引用的页面中设置

布局文件

@{
var includeUnobtrusive = ViewBag.ExcludeUnObtrusive == null || ViewBag.ExcludeUnObtrusive   == false;
}
....
....
 @if (includeUnobtrusive)
{
    @Scripts.Render("~/bundles/jqueryunobtrusive")
}

你研究过了吗?我还没有,因为knockoutjs页面上的示例使用的是jQueryValidator。