1

我有七个复选框,如下所示。我正在尝试做以下三件事:
1)当“任何”复选框被“选中”时,剩余的“1-6”应该被“取消选中”。2)当“1到6”复选框中的任何一个被“选中”时,“任何”复选框应该被“取消选中”。3)如果我“检查”数字然后“取消选中”所有数字,那么应该“选中”“任何”复选框

我能够使用 jquery 做 1)和 2),但不能做 3)。

我无法检查是否所有复选框“1 - 6”都“未选中”。

html:

<input name="deal_any" type="checkbox">any

<input name="deal" type="checkbox">1
<input name="deal" type="checkbox">2
<input name="deal" type="checkbox">3
<input name="deal" type="checkbox">4
<input name="deal" type="checkbox">5
<input name="deal" type="checkbox">6

jQuery:

$("input").click(function(){
name=$(this).attr("name");
match = name.match(/any/);
if( match != null)
{
if($(this).is(':checked'))
{
   $('input[name="deal"]').attr('checked', false);
}
}
else
{
if($(this).is(':checked'))
{
   $('input[name="deal_any"]').attr('checked', false);
}
}
});

谁能告诉我如何做到这一点?对不起,如果我的解释不清楚。

我将感谢您的任何努力,并提前感谢您的帮助!

4

3 回答 3

3

你可以这样做

var da = $('input[name="deal_any"]'); // any checkbox
var di = $('input[name=deal]'); // other 6
// when any checkbox changes
da.change(function() {
    // if checked then uncheck all others
    if(this.checked){
        di.prop('checked',false);
    }
});
// when other 6 checkboxes change
di.change(function(){
    // if none are checked then check "deal_any" checkbox - else uncheck
    da.prop('checked',$('input[name=deal]:checked').length === 0);
}).change(); // trigger on page load

http://jsfiddle.net/W8QSW/

你可以像这样使它通用

var da = $('input.class_one'); // checkbox with name that ends with any
var di = $('input.class_two'); // other checkboxes that don't have any
// when any checkbox changes
da.change(function() {
    // if checked then uncheck all others
    if(this.checked){
        di.prop('checked',false);
    }
});
// when other 6 checkboxes change
di.change(function(){
    // if none are checked then check "deal_any" checkbox - else uncheck
    da.prop('checked',$('input.class_two:checked').length === 0);
}).change(); // trigger on page load

​
于 2012-12-20T21:08:22.697 回答
2
if ($('input[name=deal]:checked').length==0) {

http://jsfiddle.net/mblase75/8MWgj/

于 2012-12-20T21:04:05.603 回答
2

这将满足 OP 列出的所有条件 -

$('input[name="deal"]').change(function() {
    $('input[type="checkbox"]').not($(this)).prop('checked', false);
    if($('input[name="deal"]:checked').length == 0){
        $('input[name="deal_any"]').prop('checked', true);
    } 
});

基于 OP 希望能够在没有明确名称的复选框的情况下重复使用它,他也可以这样做 -

$('input[name="deal"]').change(function() {
    $('input[type="checkbox"]').not($(this)).prop('checked', false);
    if($('input[type="checkbox"]:checked').length == 0){
        $('input[type="checkbox"]').eq(0).prop('checked', true);
    } 
});
于 2012-12-20T21:13:35.120 回答