jQuery禁用单个字段的规则验证
我正在使用MVC创建在运行时生成的表单。对于验证,我正在尝试使用非常方便的jQuery验证库。我有每个字段的CDATA验证表达标签jQuery禁用单个字段的规则验证
<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'}}}">
这精美的作品的属性。现在我需要的另一个要求是,根据页面上的逻辑显示和隐藏一些字段,并且我需要禁用对隐藏字段的验证,以免它们干扰表单提交。只需切换所需的信息:真实到错误并回到真实就足够了。只有我不知道如何。
任何人有任何经验吗?
只需添加忽略规则并定义选择器即可。 在这个例子中,验证会忽略有class="ignore"
$("#myform").validate({
ignore: ".ignore"
})
上Gabe的答案之后的所有元素,你也可以设置忽略值作为默认的,所以你不必设置每个窗体上。
$.validator.setDefaults({ignore: ".ignore"});
还要注意,忽略场是在jQuery的not()
功能,使任何有效的选择都可以使用,而不仅仅是简单的类使用jQuery选择。
另请参阅http://docs.jquery.com/Plugins/Validation/validate#toptions了解有关可以设置的其他默认值的详细信息。
如果您使用ASP.NET MVC Unobtrusive JQuery验证,您需要以这种方式设置设置。这是因为Microsoft实际调用jQuery验证的方式。在ready
方法中这应该是安全的。
编辑:请复制粘贴前请参阅Cory的评论。这是我的原代码
$("form").data("validator").settings.ignore = ".data-val-ignore, :hidden, :disabled";
然后我申请.data-val-ignore
类的东西不验证。
请注意,您可能需要添加: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;
最后你可能想要设计它 - 在调试时特别有用。
.data-val-ignore
{
background: #eee;
}
之前执行它感谢MVC的例子;正是我所期待的。 – 2013-03-07 22:31:27
访问设置的方式似乎已经改变(至少在我的项目中),现在是:$(“form”).validate()。settings.ignore - 以防万一这是其他人的解决方案! – 2013-05-15 01:48:13
@CoryW。我真的认为你应该把这个评论变成一个答案!为我节省了很多时间。没有其他解决方案为我工作 – Code 2017-01-19 11:24:57
我曾与$('.multiselect').rules('remove');
一个更好的时间在我的情况下,无论出于什么原因将.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的 - 日期:2013年2月4日
酷..它的工作 – shake 2010-05-17 22:59:01
警告! 'defaults'配置中'jquery.validate.js'的默认值是'ignore:“:hidden”'所以我建议把'ignore:'.ignore,:hidden“'或其他隐藏的字段用于验证忽然会给你的错误 – 2013-02-22 06:52:57
没关系,我在jquery.validate.js – Nilzor 2014-02-03 09:01:41