我有两个文本框,电话号码,#inputPh
,和电子邮件,#inputEm
。其中任何一个都是强制性的。 我使用以下规则:
rules: {
inputPhone: {
required: {depends: function(){
if($("#inputEm").val()=="")//return value based on textbox1 status
return true;
else
return false;
}
},
isNum: true,
minlength: 10,
maxlength: 12
},
inputEmail: {
required: {depends: function(){
if($("#inputPh").val()=="")//return value based on textbox1 status
return true;
else
return false;
}
},
email: true
}
},
highlight: function(element) {
$(element).closest('.control-group').removeClass('success').addClass('error');
},
success: function(element) {
element.addClass('valid').closest('.control-group').removeClass('error').addClass('success');
}
验证工作正常,但问题是,当表单提交时带有空字段时,两个文本框都将突出显示错误类。 之后,当我在其中一个文本框中输入有效值时,只有该 particulor 字段获得成功类,而另一个将具有错误类, 即使表格可以提交。
如何通过 jQuery 验证器函数访问或传递依赖元素?
请改用additional-methods.js
文件中包含的 require_from_group
方法。 根据代码注释:
/*
* Lets you say "at least X inputs that match selector Y must be filled."
*
* The end result is that neither of these inputs:
*
* <input class="productinfo" name="partnumber">
* <input class="productinfo" name="description">
*
* ...will validate unless at least one of them is filled.
*
* partnumber: {require_from_group: [1,".productinfo"]},
* description: {require_from_group: [1,".productinfo"]}
*
*/
错误类保留在其他字段上不会有任何问题......
$(document).ready(function() {
$('#myform').validate({
rules: {
inputPhone: {
require_from_group: [1, '.mygroup'],
// isNum: true, // <-- no such rule in this plugin
minlength: 10,
maxlength: 12
},
inputEmail: {
require_from_group: [1, '.mygroup'],
email: true
}
}
});
});
演示:http://jsfiddle.net/wWjWM/
或者,您可以使用 groups
选项将两个字段的消息合并到一个标签中。 但是,这可能不是可取的,因为它也适用于这两个领域的所有其他规则。
顺便说一句:additional-methods.js
文件中有各种电话号码规则,您可以使用它们来代替minlength
和maxlength
。 (此插件中也没有isNum
这样的规则。 它被称为digits
。