Jquery 验证默认设置不起作用
Jquery Validate default settings doesn't work
默认设置不起作用。 "setdefaults" 命令不执行任何操作。
我的页面可能有很多表格和事情。但无论出于何种原因,它总是忽略 display:none "select box" "select#ffe"。 FFE 是一个选择 select 框,因此它隐藏了 select 框,因此表单不会验证它。
在规则部分,文本框验证正常,但 select 框未验证。
这是我的 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 是空的,这是由你直接设置忽略引起的。
错误针对 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 验证插件 1.11.1
jQuery 1.11.1.js
正如您通过控制台日志看到的那样,.setDefaults()
正在运行:http://jsfiddle.net/rop59zw4/
您的选择器错误...":hidden:not(select)"
应该是 ":hidden:not('select')"
。
缺少 select
周围的引号,因此它正在寻找名为 select
的变量而不是 select
元素标签。
工作演示:http://jsfiddle.net/rop59zw4/
仅供参考 - 没有名为 settings
的 .validate()
选项。 settings
中的任何选项都将被忽略或可能破坏事物...
$('form').validate({
settings: { // <-- not a valid option
ignore: ":hidden:not('select')" // <- not considered at all
},
rules: { ...
此演示显示不存在的 settings
对象中的任何内容都被完全忽略。
演示:http://jsfiddle.net/gmmauz9z/
如果您已经在 .setDefaults()
内设置了 ignore
,那么在 .validate()
内设置它会覆盖 .setDefaults()
。这允许您为多个表单提供一组默认选项,并能够覆盖单个表单。 (注意:.validate()
方法不能在同一个表单上多次调用。只使用第一个实例,所有其他实例都将被忽略。)
此演示显示 .validate()
个选项优先于 .setDefaults
个选项。
默认设置不起作用。 "setdefaults" 命令不执行任何操作。
我的页面可能有很多表格和事情。但无论出于何种原因,它总是忽略 display:none "select box" "select#ffe"。 FFE 是一个选择 select 框,因此它隐藏了 select 框,因此表单不会验证它。
在规则部分,文本框验证正常,但 select 框未验证。
这是我的 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 是空的,这是由你直接设置忽略引起的。
错误针对 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 验证插件 1.11.1
jQuery 1.11.1.js
正如您通过控制台日志看到的那样,.setDefaults()
正在运行:http://jsfiddle.net/rop59zw4/
您的选择器错误...":hidden:not(select)"
应该是 ":hidden:not('select')"
。
缺少 select
周围的引号,因此它正在寻找名为 select
的变量而不是 select
元素标签。
工作演示:http://jsfiddle.net/rop59zw4/
仅供参考 - 没有名为 settings
的 .validate()
选项。 settings
中的任何选项都将被忽略或可能破坏事物...
$('form').validate({
settings: { // <-- not a valid option
ignore: ":hidden:not('select')" // <- not considered at all
},
rules: { ...
此演示显示不存在的 settings
对象中的任何内容都被完全忽略。
演示:http://jsfiddle.net/gmmauz9z/
如果您已经在 .setDefaults()
内设置了 ignore
,那么在 .validate()
内设置它会覆盖 .setDefaults()
。这允许您为多个表单提供一组默认选项,并能够覆盖单个表单。 (注意:.validate()
方法不能在同一个表单上多次调用。只使用第一个实例,所有其他实例都将被忽略。)
此演示显示 .validate()
个选项优先于 .setDefaults
个选项。