jQuery Validate 在使用 Unobtrusive Validation 时未执行

Posted

技术标签:

【中文标题】jQuery Validate 在使用 Unobtrusive Validation 时未执行【英文标题】:jQuery Validate is not executing while using Unobtrusive Validation 【发布时间】:2017-01-08 08:53:16 【问题描述】:

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

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

【问题讨论】:

您的按钮代码在哪里?请添加 Button 的 html 代码 一个示例 sn-p 会有所帮助。 【参考方案1】:

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

为什么?

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

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

【讨论】:

我想唯一的方法是根据条件添加和删除所需的属性?因为我不打算删除不显眼的插件。【参考方案2】:

请改用required attribute

<input type="password" required>

【讨论】:

我不能这样做,因为只有在某些条件下才需要。 这已经很晚了,但当然可能有条件地使用required 属性:required="@some-boolean-value"。这是否适用于特定情况,我不能说。

以上是关于jQuery Validate 在使用 Unobtrusive Validation 时未执行的主要内容,如果未能解决你的问题,请参考以下文章

jquery.validate.unobtrusive的使用

自定义 asp.net mvc 3 jquery.validate.unobtrusive

jquery.validate使用

jquery.validate.js使用之自定义表单验证规则

JQuery.Validate使用消息添加动态规则

jquery validate表单验证