jQuery 使用非侵入式验证时未执行验证

jQuery Validate is not executing while using Unobtrusive Validation

我正在使用 ASP.NET MVC,我有 jQuery、jQuery 验证、jQuery validate.config、jQuery 验证不显眼,不显眼的 ajax 和我捆绑包中的其他库。我的页面中有一个表单,里面有一些字段。它有一个按钮类型的按钮,当用户单击该按钮时,我正在尝试做一些事情,然后执行 $(form).submit(),我希望它被 jQuery 验证中的提交处理程序拦截方法,而不是提交表单,它将对我的服务器执行 ajax post。我想使用 jQuery.validate 方法的原因是我在表单中有很多条件必填字段和其他验证。但由于某种原因,jQuery 验证根本不是 executing/firing,表单正在提交而不是被提交处理程序拦截。如果我正确设置了所有内容,我不知道为什么它不起作用。这是我对 jQuery 验证方法的调用。我从来没有看到警告说是好的。

$('form[name="submitCheckoutForm"]').validate({
    debug: true,
    rules: {
        "Password": {
            required: true
        }
    },
    submitHandler: function (form) {
        //actions.SubmitCheckout();
        alert('is good');
        return false;
    }
});

请改用required attribute

<input type="password" required>

如果您使用的是 Unobtrusive Validation 插件,则您不能同时调用 jQuery Validate 的 .validate() 方法。

为什么?

  1. Unobtrusive Validation 插件 自动 根据表单中的各种数据属性构造 .validate() 方法。

  2. jQuery 验证插件不允许在同一个表单上多次调用 .validate() 方法。因此,由于您已经在使用非侵入式验证来构造 .validate(),因此您对 .validate() 的其他调用将被完全忽略。