Mic*_*ael 2 validation checkbox jquery jquery-validate
我有一组4个复选框,都有不同的名称,并要求至少检查1.
我把他们所有的课程设置为'require-one'.
<html>
<head>
<script src="scripts/lib/jquery.js" type="text/javascript"></script>
<script src="scripts/jquery.validate.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function(){
$("#itemForm").validate({
rules: {
check1: {
required : {
depends: function(element) {
$('.require-one:checked').size() == 0;
}
}
}
}
});
});
</script>
</head>
<body>
<form name="itemForm" id="itemForm" method="post">
<input type="checkbox" name="check1" id="check1" class="require-one" value="1" />
<input type="checkbox" name="check2" id="check2" class="require-one" value="2" />
<input type="text" class="required" />
<input type="submit" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果您在'return'之前输入$('.require-one:checked').size() == 0;但是,现在我的问题是如果选中Checkbox#1,错误消息将仅消失.如果选中Checkbox#2,它将不会消失,但会提交.如果选中任何复选框,如何删除错误?
rules: {
'nameOfAnyCheckbox': {
required : {
depends: function(element) {
return $('.require-one:checked').size() == 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
贾斯汀有正确的答案.这是一个扩展,它将所有复选框的错误报告合并为一条消息:
$.validator.addMethod('require-one', function (value) {
return $('.require-one:checked').size() > 0; }, 'Please check at least one box.');
var checkboxes = $('.require-one');
var checkbox_names = $.map(checkboxes, function(e,i) { return $(e).attr("name")}).join(" ");
$("#itemForm").validate({
groups: { checks: checkbox_names },
errorPlacement: function(error, element) {
if (element.attr("type") == "checkbox")
error.insertAfter(checkboxes.last());
else
error.insertAfter(element);
}
});
Run Code Online (Sandbox Code Playgroud)
(请注意,此代码在jquery.validate.js版本1.10.0之后似乎不起作用.您必须为以后的版本修改它).