我有以下用于表单复选框的html代码
<div class="drinking col-xs-12">
<div class="col-xs-7 drinkingLeft">
<input type="checkbox" name="allwines" id="allwines" value="0" class="require-one col-xs-1 styled myClassA" value="0" data-label="All Wines" />
<input id='allwinesHidden' type='hidden' value='0' name='allwines'>
</div>
<div class="col-xs-5 drinkingLeft">
<input type="checkbox" name="beer" id="beer" value="0" class="require-one col-xs-1 styled myClassB" value="0" data-label="Beer" />
<input id='beerHidden' type='hidden' value='0' name='beer'>
</div>
<div class="clearix"></div>
<div class="col-xs-7 drinkingLeft">
<input type="checkbox" name="redwines" id="redwines" value="0" class="require-one col-xs-1 styled myClassC" value="0" data-label="Red Wines" />
<input id='redwinesHidden' type='hidden' value='0' name='redwines'>
</div>
<div class="col-xs-5 drinkingLeft">
<input type="checkbox" name="cider" id="cider" value="0" class="require-one col-xs-1 styled myClassD" value="0" data-label="Cider" />
<input id='ciderHidden' type='hidden' value='0' name='cider'>
</div>
<div class="clearix"></div>
<div class="col-xs-7 drinkingLeft">
<input type="checkbox" name="whitewines" id="whitewines" value="0" class="require-one col-xs-1 styled myClassE" value="0" data-label="White Wines" />
<input id='whitewinesHidden' type='hidden' value='0' name='whitewines'>
</div>
<div class="col-xs-5 drinkingLeft">
<input type="checkbox" name="spirits" id="spirits" value="0" class="require-one col-xs-1 styled myClassF" value="0" data-label="Spirits" />
<input id='spiritsHidden' type='hidden' value='0' name='spirits'>
</div>
<div class="clearix"></div>
<div class="col-xs-7 drinkingLeft">
<input type="checkbox" name="sparkling" id="sparkling" value="0" class="require-one col-xs-1 styled myClassG" value="0" data-label="Sparkling/Champagne" />
<input id='sparklingHidden' type='hidden' value='0' name='sparkling'>
</div>
<div class="col-xs-5 drinkingLeft">
<input type="checkbox" name="fortified" id="fortified" value="0" class="require-one col-xs-1 styled myClassH" value="0" data-label="Fortified" />
<input id='fortifiedHidden' type='hidden' value='0' name='fortified'>
</div>
<div id="error_msg3"></div>
<div class="clearix"></div>
</div>
</div>
我想确保至少选中了一个复选框。
我希望不作为提示框;但是消息需要显示在div error-msg3中。
请注意,所有输入都有不同的类名和ID。
是一个临时链接我正在使用jQuery验证来验证表单的其余部分。通过jquery验证获得解决方案会很好。
提前致谢
答案 0 :(得分:7)
这很简单......
function validate_form()
{
valid = true;
if($('input[type=checkbox]:checked').length == 0)
{
alert ( "ERROR! Please select at least one checkbox" );
valid = false;
}
return valid;
}
HTML
<form name="myform" method="post" action="#" onsubmit="return validate_form();">
<input type="checkbox" name="box1" value="box1">Box1
<input type="checkbox" name="box2" value="box2">Box2
<input name="submit" type="submit" value="Submit"/>
</form>
答案 1 :(得分:3)
您必须更改复选框的名称属性,并为其添加规则,并将minlength
设置为1。
您可以在显示自定义消息后将其附加到#error_msg3
并使用:
if(element.attr("name") == "check") error.appendTo("#error_msg3")
修改强>
$("input[type='checkbox'][name='check']").change(function() {
if ($("input[type='checkbox'][name='check']:checked").length){
$(this).valid()
}
})
编辑2
我已经更新了小提琴,现在当你选中或不选中一个复选框时,消息正确切换。
$("input[type='checkbox'][name='check']").change(function() {
$('#submitDetails').valid();
});
答案 2 :(得分:2)
引用OP :
“我想确保至少选中了一个复选框。”
如果您想使用jQuery Validate插件,和所有复选框都有不同的name
,只需使用属于the additional-methods.js
file的require_from_group
方法即可。
由于您已经在这些名为require-one
的复选框上有一个公共类,因此更容易。
$('#form').validate({
rules: {
fieldname: {
require_from_group: [1, '.require-one']
},
// declare same rule on all eight checkboxes
....
....
}
});
但是,您可以使用jQuery .validate()
中的.rules('add')
方法一次性声明它们,而不是在.each()
中声明所有这八个方法。
$('.require-one').each(function () {
$(this).rules('add', {
require_from_group: [1, this],
messages: {
require_from_group: "please check one"
}
});
});
然后将所有八条消息合并为一条,使用groups
选项...
$('#form').validate({
groups: { // combine these error messages into one
checkboxes: 'allwines beer redwines cider whitewines spirits sparkling fortified'
}
});
工作演示:http://jsfiddle.net/JVWu2/1/
将错误消息放入#error_msg3
错误框与放置任何其他jQuery Validate消息没什么不同。
答案 3 :(得分:1)
试试这个
$("#YourbuttonId").click(function(){
if($('input[type=checkbox]:checked').length == 0)
{
alert('Please select atleast one checkbox');
}
});
通过插件
HTML
<label class="checkbox inline">
<input type="checkbox" id="typecb1" name="spamm[]" value="Loading Point"> Loading Point
</label>
<label class="checkbox inline">
<input type="checkbox" id="typecb2" name="spamm[]" value="Unloading Point"> Unloading Point
</label>
<label class="checkbox">
<input type="checkbox" id="typecb3" name="spamm[]" value="Retailer Unloading"> Retailer Unloading
</label>
脚本
rules:{
"spamm[]": {
required: true,
minlength: 1
}
}
答案 4 :(得分:1)
尝试
添加此代码即可
var chck = $('input[type=checkbox]');
chck.addClass('check-one');
$.validator.addMethod('check-one', function (value) {
return (chck.filter(':checked').length > 0);
}, 'Check at least one checkbox');
<小时/> fiddle Demo
组仅在前面的第一个复选框显示错误
var chck = $('input[type=checkbox]');
chck.addClass('check-one');
$.validator.addMethod('check-one', function (value) {
return (chck.filter(':checked').length > 0);
}, 'Check at least one checkbox');
var chk_names = $.map(chck, function (el, i) {
return $(el).prop("name");
}).join(" ");
$("#submitDetails").validate({
groups: {
checks: chk_names
},
submitHandler: function (form) {
alert('Form Submited');
return false;
}
});
<小时/> 如果要在所有复选框
前显示错误,请删除组
$("#submitDetails").validate({
submitHandler: function (form) {
alert('Form Submited');
return false;
}
});