jQuery禁用单个字段的规则validation
我正在使用MVC来创build在运行时生成的窗体。 为了validation,我正在尝试使用非常方便的jQueryvalidation库。 我有标签的cdata属性中每个字段的validationexpression式
<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'}}}">
这工作很好。 现在我要求的另一个要求是,根据页面上的逻辑显示和隐藏一些字段,并且我需要禁用对隐藏字段的validation,以便它们不干扰表单提交。 只需要切换所需:真到假,回到真实就够了。 只有我不知道如何。
任何人有任何经验呢?
只需添加忽略规则并定义select器。 在这个例子中,validation将忽略具有class="ignore"
所有元素
$("#myform").validate({ ignore: ".ignore" })
如果您使用ASP.NET MVC Unobtrusive JQueryvalidation,则需要以这种方式设置设置。 这是因为Microsoft实际调用jQueryvalidation的方式。 这应该是安全的做一个ready
方法。
编辑:复制粘贴之前,请参阅下面的科里的评论。 这是我的原始代码
$("form").data("validator").settings.ignore = ".data-val-ignore, :hidden, :disabled";
然后,我只是将.data-val-ignore
类应用于不validation的事情。
请注意,您可能需要添加:hidden
其实是在jquery.validate.js
定义的默认忽略行为。 我想添加:disabled
。
$.extend($.validator, { defaults: { messages: {}, groups: {}, rules: {}, errorClass: "error", validClass: "valid", errorElement: "label", focusInvalid: true, errorContainer: $([]), errorLabelContainer: $([]), onsubmit: true, ignore: ":hidden", // default for ignore in jquery.validate.js ignoreTitle: false, onfocusin: function( element, event ) { this.lastActive = element;
最后你可能想要devise它 – 在debugging时特别有用。
.data-val-ignore { background: #eee; }
在Gabe的回答之后,您还可以将忽略值设置为默认值,所以您不必在每个表单上设置它。
$.validator.setDefaults({ignore: ".ignore"});
另请注意,ignore字段是jQuery not()
函数中使用的jQueryselect器,因此可以使用任何有效的select器,而不仅仅是简单的类。
另请参阅http://docs.jquery.com/Plugins/Validation/validate#toptions了解可以设置的其他默认值的详细信息。;
我有更好的时间与$('.multiselect').rules('remove');
在我的情况下,不pipe是什么原因,将.cancel
或.data-val-ignore
到$.validator.setDefaults
和$('.multiselect')
没有修复它。
我也试过了
$('select[multiple][data-val]').removeAttr('data-val').removeAttr('data-val-number').addClass('data-val-ignore').validate({ ignore: "[multiple]" }); $.validator.setDefaults({ ignore: ":hidden,:disabled,.data-val-ignore" }); $('.multiselect').closest('form').data('validator').settings.ignore = ":hidden,:disabled,.data-val-ignore, .data-val-ignore *"; $('.multiselect').data('validator').settings.ignore = "[multiselect]"
每个人…和他们的组合
我的jquery.validate.js
是
/*! jQuery Validation Plugin - v1.11.0 - 2/4/2013 * https://github.com/jzaefferer/jquery-validation * Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */
jquery是
jQuery的JavaScript库v1.9.1 – date:2013-2-4
- javax.validation.ValidationException:HV000183:无法加载“javax.el.ExpressionFactory”
- Facebook访问令牌服务器端validation的iPhone应用程序
- 如何在Rails 3中实现最小/最大validation器?
- 用MVVM进行适当的validation
- 如何使用React.JS正确validationinput值?
- Kohana 3:validation模型的例子
- JSR 303 Beanvalidation+ Javascript客户端validation
- 在构build使用数据的XmlReader或XPathDocument之前,如何从基于XML的数据源中删除无效的hex字符?
- 我可以更改FormsAuthentication cookie名称吗?