我已经使用jQuery Validation插件将表单放在一起,并且所有输入都可以正常工作验证和错误消息 - 复选框除外。我有两个复选框问题。jQuery验证插件:复选框组和错误消息问题
第一个是验证插件API似乎无法处理分组上下文中的复选框(我正在使用字段集进行分组)。在这里发现了几个解决问题的方法,包括参考Rebecca Murphey针对使用自定义方法和类的更一般情况的a post。适应这种情况:
jQuery.validator.addMethod('required_group', function(val, el) {
var fieldParent = $(el).closest('fieldset');
return fieldParent.find('.required_group:checked').length;
});
jQuery.validator.addClassRules('required_group', {
'required_group': true
});
jQuery.validator.messages.required_group = 'Please check at least one box.';
这种工作,但在每个复选框上产生错误消息,并且只在每个框被单击时删除它们。这对于用户来说不是一个可以接受的情况,只能通过点击误报来摆脱它们。理想情况下,我猜想需要的是在显示之前防止或消除额外的消息,并使用errorPlacement在父字段集中显示单个错误消息,然后单击任何复选框将其删除。理想情况下,可能它们都会显示,但事件处理程序可以通过单击关闭全部冗余消息,这就是tvanfosson提供的this approach似乎要做的事情。 (另一种定制方法here,但我无法让它工作。)我想我也应该注意到这种形式要求复选框有不同的名称。
我的第二个问题是,与在复选框形式的字段集之一还包含复选框的外复选框中的一个下一个嵌套字段集。因此,除了第一级单箱检查要求之外,如果选中包含第二级复选框的特定复选框,则必须至少检查一个第二级箱子。不确定正确的方法;我猜需要发生什么(按照上面的方案)是触发器复选框将使用toggleClass将'required_group'类添加/删除到子字段中的所有复选框,然后(希望)将与父代相同字段:
$("#triggerCheckbox").click(function() {
$(this).find(":checkbox").toggleClass("required_group");
});
任何建议或想法的欢迎。我远远超出了我在这一方面有限的jQuery技能,很高兴听到我错过了简单,优雅和/或显而易见的方法来做到这一点!
你有没有找到解决方法呢?我面临着同样的问题,文件上传输入,而不是您的复选框。干杯。 – Nicolas 2010-06-16 08:09:56
您的问题陷入困境。这会帮助你吗? http://stackoverflow.com/questions/1300994/jquery-validate-require-at-least-one-field-in-a-group-to-be-filled – 2011-08-17 17:33:08