在新版本的jQuery验证插件1.9中默认验证隐藏字段被忽略.我正在使用CKEditor进行textarea输入字段,它隐藏了字段并将其替换为iframe.该字段在那里,但是对隐藏字段禁用了验证.使用验证插件版本1.8.1,一切都按预期工作.
所以我的问题是如何使用v1.9验证插件启用隐藏字段的验证.
此设置不起作用:
$.validator.setDefaults({ ignore: '' });
Run Code Online (Sandbox Code Playgroud)
Spa*_*rky 316
该插件的作者说你应该使用"没有引号的方括号",[]
http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/
发布:验证插件1.9.0: "......另一个更改应该使隐藏元素的表单设置更容易,默认情况下现在忽略它们(选项"忽略"现在默认为":hidden").理论上,这可能会破坏现有的设置.在实际情况不太可能的情况下,你可以通过将ignore-option设置为"[]"(没有引号的方括号)来修复它.
要为所有表单更改此设置:
$.validator.setDefaults({
ignore: [],
// any other default options and/or rules
});
Run Code Online (Sandbox Code Playgroud)
(不要求.setDefaults()在document.ready功能范围内)
或针对一种特定形式:
$(document).ready(function() {
$('#myform').validate({
ignore: [],
// any other options and/or rules
});
});
Run Code Online (Sandbox Code Playgroud)
编辑:
请参阅此答案,了解如何在某些隐藏字段上启用验证但仍忽略其他字段.
编辑2:
在留下评论"这不起作用"之前,请记住OP只是询问jQuery Validate插件,他的问题与ASP.NET,MVC或任何其他Microsoft框架如何改变此插件的正常无关预期的行为.如果您使用的是Microsoft框架,那么jQuery Validate插件的默认功能将被Microsoft的unobtrusive-validation插件覆盖.
如果您正在努力使用该unobtrusive-validation插件,请转而参考此答案:https: //stackoverflow.com/a/11053251/594235
Jam*_*com 70
这对我有用,在一个ASP.NET MVC3站点中,我离开框架设置不显眼的验证等,以防它对任何人都有用:
$("form").data("validator").settings.ignore = "";
Run Code Online (Sandbox Code Playgroud)
小智 64
一定要放
$.validator.setDefaults({ ignore: '' });
Run Code Online (Sandbox Code Playgroud)
不在里面$(document).ready
Jus*_*els 28
所以我会更深入地了解为什么这不起作用,因为我是那种在不知道哈哈的情况下晚上无法入睡的人.我正在使用jQuery validate 1.10和Microsoft jQuery Unobtrusive Validation 2.0.20710.0,它发布于2013年1月29日.
我开始在jQuery Validate中搜索setDefaults方法,并在未分解文件的第261行找到它.所有这个函数确实将你的json设置合并到现有的中$.validator.defaults,这些设置是使用ignore属性设置为":hidden"以及jQuery Validate中定义的其他默认值初始化的.所以在这一点上我们已经忽略了.现在让我们看看这个默认属性的引用位置.
当我遍历代码以查看$.validator.defaults引用的位置时.我注意到构造函数只使用了表单验证器,jQuery中的第170行验证了未编译的文件.
// constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( true, {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
Run Code Online (Sandbox Code Playgroud)
此时,验证器将合并已设置的任何默认设置并将其附加到表单验证器.当您查看正在进行验证,突出显示,取消突出显示等的代码时,它们都使用validator.settings对象来提取ignore属性.因此,我们需要确保是否要使用setDefaults方法设置ignore,然后必须在$("form").validate()被调用之前发生.
如果您正在使用Asp.net MVC和不引人注目的插件,那么您将在查看在document.ready中调用validate的javascript后意识到. 我还在document.ready块中调用了我的setDefaults,它将在脚本之后执行,jquery验证并且不引人注意,因为我已经在html中定义了这些脚本,然后才调用它.因此,我的调用显然对验证期间跳过隐藏元素的默认功能没有影响.这里有几个选择.
选项1 - 你可以像胡安·梅拉多所指出的那样在文档之外进行调用.已经在脚本加载后立即执行.我不确定这个时间,因为浏览器现在能够进行并行脚本加载.如果我只是过于谨慎,请纠正我.此外,有可能解决这个问题,但根据我的需要,我没有走这条路.
选项2a - 我眼中的安全赌注就是用$.validator.setDefaults({ ignore: '' });文件替换document.ready事件的内部$("form").data("validator").settings.ignore = "";.这将修改在对给定表单的元素进行每次验证时jQuery验证实际使用的ignore属性.
选项2b - 在查看代码之后,您还可以使用它$("form").validate().settings.ignore = "";作为设置ignore属性的方法.原因是当查看validate函数时,它会检查是否已经通过$.data()函数为表单元素存储了验证器对象.如果它找到与表单元素一起存储的验证器对象,那么它只返回验证器对象而不是创建另一个验证器对象.
ang*_*ili 13
这在ASP.NET站点中对我有用.要在某些隐藏字段上启用验证,请使用此代码
$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";
要为表单的所有元素启用验证,请使用此表单
$("form").data("validator").settings.ignore = "";
请注意,在其中使用它们 $(document).ready(function() { })
刚刚添加ignore: []到特定表单的特定页面中,此解决方案对我有用.
$("#form_name").validate({
ignore: [],
onkeyup: false,
rules: {
},
highlight:false,
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161663 次 |
| 最近记录: |