我正在使用MVC创建在运行时生成的表单 . 为了验证,我正在尝试使用非常方便的jQuery验证库 . 我有标签的cdata属性中每个字段的验证表达式
<input type="text" name="xyz" id="xyz" class="defaultTextBox"
cdata="{validate:{required:true, decimal:true, messages:
{required:'Please enter an decimal value',
decimal:'Please enter a valid decimal'}}}">
这很好用 . 现在我还有一个要求是根据页面上的逻辑显示和隐藏某些字段,我需要在隐藏字段上禁用验证,这样它们就不会干扰表单提交 . 只需将所需的:true转换为false并返回true即可 . 只有我不知道怎么做 .
任何人都有这方面的经验吗?
4 回答
只需添加ignore规则并定义选择器即可 . 在此示例中,验证将忽略具有
class="ignore"
的所有元素如果您使用的是ASP.NET MVC Unobtrusive JQuery验证,则需要以这种方式设置设置 . 这是因为Microsoft实际调用jQuery验证的方式 . 这在
ready
方法中应该是安全的 .编辑:请在复制粘贴之前查看Cory的评论 . 这是我的原始代码
然后我只是将
.data-val-ignore
类应用于不验证的东西 .请注意,您可能希望添加
:hidden
,这实际上是jquery.validate.js
中定义的默认忽略行为 . 我也想添加:disabled
.最后你可能想要设计它 - 在调试过程中特别有用 .
根据Gabe的回答,您还可以将忽略值设置为默认值,因此您不必在每个表单上设置它 .
另请注意,ignore字段是jQuery
not()
函数中使用的jQuery选择器,因此可以使用任何有效的选择器,而不仅仅是简单的类 .有关可以设置的其他默认值的详细信息,另请参见http://docs.jquery.com/Plugins/Validation/validate#toptions .
$('.multiselect').rules('remove');
我度过了更好的时光在我的情况下,无论出于什么原因,
$.validator.setDefaults
或.data-val-ignore
都没有修复它 .我也试过了
每一个......以及它们的组合
我
jquery.validate.js
是jquery是
jQuery JavaScript Library v1.9.1 - 日期:2013-2-4