默认设置不起作用。 “setdefaults”命令不执行任何操作。
我的网页可能包含很多表单和内容。但无论出于何种原因,它总是忽略显示:无“选择框”“选择#ff”。 FFE是一个选择框,因此它会隐藏选择框,因此表单不会对其进行验证。
在规则部分,文本框验证正常,但选择框不验证。
这是我的jquery.ready:
$.validator.setDefaults({ ignore: ":hidden:not(select)" });
var validator = $("select#ffe").closest("form").data('validator');
console.log("V1: ", validator.settings.ignore);
//validator.settings.ignore = ":hidden:not(select)";
console.log("V1: ", validator.settings.ignore);
$("select#ffe").closest("form").validate({
settings: {
ignore: ":hidden:not(select)"
},
rules: {
//....... skipping some rules.......
});
$("select#ffe").rules("add", { required: true }); // chosen invisible select box
console.log("V1: ", validator.settings.ignore);
V1控制台日志不会从“V1 :: hidden”更改。
如果你试图设置“validator.settings.ignore =”:hidden:not(select)“[注释因为它不起作用]它会在表单提交时给你一个不同的错误,说它无法读取”validator.settings .rules“因为它是未定义的.jquery.validate.js中的一个奇怪的错误,因为它说validator.settings是空的,它是由你直接设置ignore引起的。
错误的目标是jquery.validate.js中的if语句:
staticRules: function( element ) {
var rules = {};
var validator = $.data(element.form, "validator");
if ( validator.settings.rules ) { // BROKEN BECAUSE VALIDATOR.SETTINGS IS EMPTY.
我正在使用:
jQuery Validation Plugin 1.11.1
jQuery 1.11.1.js
答案 0 :(得分:1)
正如您在控制台日志中看到的那样,.setDefaults()
正在运行: http://jsfiddle.net/rop59zw4/
您的选择器错误... ":hidden:not(select)"
应为":hidden:not('select')"
。
select
周围的引号丢失,因此它正在查找名为select
的变量,而不是select
元素标记。
工作演示:http://jsfiddle.net/rop59zw4/
仅供参考 - 没有名为.validate()
的{{1}}选项。放置在settings
内的任何选项都将被忽略或可能破坏......
settings
此演示显示不存在的$('form').validate({
settings: { // <-- not a valid option
ignore: ":hidden:not('select')" // <- not considered at all
},
rules: { ...
对象中的任何内容都被完全忽略。
DEMO:http://jsfiddle.net/gmmauz9z/
如果您已在settings
内设置ignore
,则在.setDefaults()
内设置.validate()
会覆盖.setDefaults()
。这允许您为多个表单设置一组默认选项,并且可以覆盖单个表单。 (注意:.validate()
方法不能在同一表单上多次调用。只使用第一个实例,忽略所有其他实例。)
此演示显示.validate()
选项优先于.setDefaults
选项。