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、unobtrusive 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