Javascript Jquery.validate需要来自\u组的\u
每当我使用Javascript Jquery.validate需要来自\u组的\u,javascript,jquery,validation,Javascript,Jquery,Validation,每当我使用require\u from\u group时,它会禁用所有其他验证。你知道为什么吗 还有一种方法可以将“Telefon”和“Mobitel”分组,并将“Telefon”和“Mobitel”中的require\u应用到it中吗 $(document).ready(function(){ $("#fncMain").validate( { /*groups:{Call:"Telefon Mobitel"},*/ rules:{ Davc
require\u from\u group
时,它会禁用所有其他验证。你知道为什么吗
还有一种方法可以将“Telefon”和“Mobitel”分组,并将“Telefon”和“Mobitel”中的require\u应用到it中吗
$(document).ready(function(){
$("#fncMain").validate(
{
/*groups:{Call:"Telefon Mobitel"},*/
rules:{
Davcna:{required:true,exactlength:5, digits:true},
Idzav:{required:true,exactlength:5, digits:true},
Maticna:{required:true,exactlength:5, digits:true},
Telefon:{require_from_group: [1,".callme"]},
Mobitel:{require_from_group: [1,".callme"]}
},
messages:{
}}
);
});
此处未包含的所有其他字段使用简单的“必需”类。如果我将require\u从\u组中删除
应用于“Telefon”和“Mobitel”的规则,则所有其他字段验证工作正常
谢谢你的帮助
EDIThtml:(太长,无法在此处发布)@Tats\n未在此处发布来自\u组的自定义require\u
:
事实证明,这也修复了一个记录的github bug,该bug是在additional-method-1.10.jsforjquery.validation
中的组的require\u版本1.10.0发布的
github问题:
smileyanp@github在他的解决方案中引用了这篇文章,他重用了@Tats_innit的函数,并创建了一个新的函数,该函数表明它可以正常工作,并且不会禁用对在require_组之前定义的其他规则的验证
这篇文章在这里是为了节省时间,因为它花了3个小时在谷歌上搜索如此小的细节
修复:
只需更新additional-method-1.10.js
或在加载additional-method-1.10.js
后执行此代码即可(覆盖函数)
jQuery.validator.addMethod(“需要来自组的组”),函数(值、元素、选项){
var numberRequired=选项[0];
var选择器=选项[1];
变量字段=$(选择器,element.form);
var filled_fields=fields.filter(函数(){
//与空字符串相比更为清晰
返回$(this).val()!=“”;
});
var empty_fields=fields.not(filled_fields);
//我们只将第一个空字段标记为无效
if(填充字段.length
编辑:实际上,此修复程序似乎已并入1.12.0版,您可以在此处找到它的CDN指针:
供参考:
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.min.js
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.js
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.min.js
在找到上面的解决方案之前,我在下面找到了这段代码,所以我的建议是使用上面提到的CDN链接,而不是将下面的代码粘贴到JS文件中
有一个(滚动到最底部),我在这里复制了它这不是我的作品,写这篇文章的GitHub用户sfreytag似乎并不是一个很有贡献的人,我只是想把它写进去,这样其他发现这篇文章的人就不必在GitHub上钻研线程:
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var validator = this;
var selector = options[1];
var validOrNot = $(selector, element.form).filter(function() {
return validator.elementValue(this);
}).length >= options[0];
if(!$(element).data('being_validated')) {
var fields = $(selector, element.form);
fields.data('being_validated', true);
fields.valid();
$(element.form).valid();
fields.data('being_validated', false);
}
return validOrNot;
}, jQuery.format("Please fill at least {0} of these fields."));
到目前为止,我已经用它做了有限的测试,但它似乎像您预期的那样工作,所有的验证都会发生(而不是像以前那样通过任何非“require_from_group”的验证),所以到目前为止我对它很满意。我只是在JS代码顶部的验证器声明之后添加了它:
$.validator.setDefaults({
debug: true,
success: "valid"
});
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var validator = this;
var selector = options[1];
//continuation of code...
您是否可以共享此表单的html,至少与这些规则相关?i、 e.什么东西有类callme
,etc@Ryley我发布了我的HTML(表单部分)。检查编辑我的帖子。:)我认为您发现了一个bug…请参阅以了解有关潜在bug的详细信息。如果这就是最终的解决方案,请将其作为答案发布在这里,并向我征求意见:)呵呵,我实际上发布了这个bug报告:)谢谢你简化了它;)在比较这个函数的1.11.1版本与这个答案中的版本的行为时,我注意到这个版本似乎不像发货版本那样进行贪婪的重新验证。此版本不会在表单提交时重新验证,但发货版本会在最小数量的字段中有值(onkeyup)时立即清除验证消息。仅供参考,以防有人需要对他们的用例进行贪婪的重新验证。这是一个适合我的版本。它不会违反其他规则,并在keyup上重新验证组字段。
$.validator.setDefaults({
debug: true,
success: "valid"
});
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var validator = this;
var selector = options[1];
//continuation of code...