选中其他复选框时取消选中复选框

时间:2016-06-30 07:40:20

标签: javascript jquery html checkbox

我尝试了我的代码,但它并不总是有效,我放弃了。

在检查其他复选框时,您可以帮助我使用我的代码取消选中复选框吗?

这是我的代码:

JS代码:

$("#1 #checkAll").change(function() {
    if ($("#1 #checkAll").is(':checked')) {
        $("#1 input[type=checkbox]").each(function() {
            $(this).prop("checked", true);
        });
    } else {
        $("#1 input[type=checkbox]").each(function() {
            $(this).prop("checked", false);
        });
    }
});
$("#2 #checkAll2").change(function() {
    if ($("#2 #checkAll2").is(':checked')) {
        $("#2 input[type=checkbox]").each(function() {
            $(this).prop("checked", true);
        });
    } else {
        $("#2 input[type=checkbox]").each(function() {
            $(this).prop("checked", false);
        });
    }
});

$('#c1').on('click', function() {
    var $$ = $(this).next('#checkAll')
    console.log($$.is(':checked'))
    if ($$.is(':checked')) {
        $(this).toggleClass('unchecked checked');
        $('#checkAll').prop('checked', false).change();
    } else {
        $(this).toggleClass('unchecked checked');
        $('#checkAll').prop('checked', true).change();
    }
})
$('#c2').on('click', function() {
    var $$ = $(this).next('#checkAll2')
    if ($$.is(':checked')) {
        $(this).toggleClass('unchecked checked');
        $('#checkAll2').prop('checked', false).change();
    } else {
        $(this).toggleClass('unchecked checked');
        $('#checkAll2').prop('checked', true).change();
    }
})

CSS代码:

.unchecked {
    background: #1ba1e2; 
    border-color: #1ba1e2;
    height: 70px; 
    font-weight: bold;  
    margin-left:20px; 
    width:200px; 
    font-size: 30px;
}
.checked {
    background: #1c629b; 
    border-color: #1c629b;
    height: 70px; 
    font-weight: bold;  
    margin-left:20px; 
    width:200px; 
    font-size: 30px;
}

HTML code:

<div class="container">
    <center>
        <h2 style="color: white; padding-top: 32px; font-size: 50px; font-family: 'Gotham Bold';"><b>Pilih Nominal</b></h2>
        <div style="margin-top: 35px; margin-left: -22px;">
            <form action="" method="POST">
                <input type="hidden" name="sqn" value="20160625110635">
                <input type="hidden" name="saldo" value="Array">
                <input type="hidden" name="mac" value="64:70:02:4a:a7:e4">
                <input type="hidden" name="tid" value="01">
                <input type="hidden" name="msidn" value="6287875230364">
                <input type="hidden" name="typ" value="PREPAID">
                <input type="hidden" name="ip" value="192.168.1.1">
                <input type="hidden" name="cmd" value="prepaid-type">
                <table id="tab1">
                <tr>
                <td id="1">
                    <button type="button" id="c1" class="unchecked">1</button>
                    <input type="checkbox" name="checkAll" id="checkAll" style="display: none;">
                    <input type="checkbox" name="book1" id="book" value="book1">
                    <input type="checkbox" name="book2" id="book" value="book2">
                    <input type="checkbox" name="book3" id="book" value="book3">
                    <input type="checkbox" name="book4" id="book" value="book4">
                    <input type="checkbox" name="book5" id="book" value="book5">
                </td>
                </tr>
                <tr>
                <td id="2">
                    <button type="button" id="c2" class="unchecked">2</button>
                    <input type="checkbox" name="checkAll" id="checkAll2" style="display: none;">
                    <input type="checkbox" name="book1" id="book" value="book1">
                    <input type="checkbox" name="book2" id="book" value="book2">
                    <input type="checkbox" name="book3" id="book" value="book3">
                    <input type="checkbox" name="book4" id="book" value="book4">
                    <input type="checkbox" name="book5" id="book" value="book5">
                </td>
                </tr>
                </table>
                <input type="submit" name="sbm" value="Submit" class="button primary">
            </form>
        </div>
    </center>
</div>

这是我的小提琴:JSFIDDLE

3 个答案:

答案 0 :(得分:2)

看看这个:

&#13;
&#13;
$("#1 #checkAll").change(function() {
      if ($("#1 #checkAll").is(':checked')) {
        $("#1 input[type=checkbox]").each(function() {
          $(this).prop("checked", true);
        });
        //When you check all #1 checkboxes, 
        //you uncheck all #2 checkboxes
        $("#2 input[type=checkbox]").each(function() {
          $(this).prop("checked", false);
        });
      } else {
        $("#1 input[type=checkbox]").each(function() {
          $(this).prop("checked", false);
        });
      }
    });
    $("#2 #checkAll2").change(function() {
      if ($("#2 #checkAll2").is(':checked')) {
        $("#2 input[type=checkbox]").each(function() {
          $(this).prop("checked", true);
        });
        //When you check all #2 checkboxes, 
        //you uncheck all #1 checkboxes
        $("#1 input[type=checkbox]").each(function() {
          $(this).prop("checked", false);
        });
      } else {
        $("#2 input[type=checkbox]").each(function() {
          $(this).prop("checked", false);
        });
      }
    });

    $('#c1').on('click', function() {
      var $$ = $(this).next('#checkAll')
      console.log($$.is(':checked'))
      if ($$.is(':checked')) {
        $(this).toggleClass('unchecked checked');
        $('#checkAll').prop('checked', false).change();
      } else {
        $(this).toggleClass('unchecked checked');
        //when you click #c1, you remove class checked to #c2
        $("#c2").removeClass('checked');
        $("#c2").addClass('unchecked');
        $('#checkAll').prop('checked', true).change();
      }
    })
    $('#c2').on('click', function() {
      var $$ = $(this).next('#checkAll2')
      if ($$.is(':checked')) {
        $(this).toggleClass('unchecked checked');
        $('#checkAll2').prop('checked', false).change();
      } else {
        $(this).toggleClass('unchecked checked');
        //when you click #c2, you remove class checked to #c1
        $("#c1").removeClass('checked');
        $("#c1").addClass('unchecked');
        $('#checkAll2').prop('checked', true).change();
      }
    })
&#13;
.unchecked {
		background: #1ba1e2; border-color: #1ba1e2;
		 height: 70px; font-weight: bold;  margin-left:20px; width:200px; font-size: 30px;
		}
.checked {background: #1c629b; border-color: #1c629b;
		 height: 70px; font-weight: bold;  margin-left:20px; width:200px; font-size: 30px;
		}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="container">
  <center>
    <h2 style="color: white; padding-top: 32px; font-size: 50px; font-family: 'Gotham Bold';"><b>Pilih Nominal</b></h2>
    <div style="margin-top: 35px; margin-left: -22px;">

      <form action="" method="POST">
        <input type="hidden" name="sqn" value="20160625110635">
        <input type="hidden" name="saldo" value="Array">
        <input type="hidden" name="mac" value="64:70:02:4a:a7:e4">
        <input type="hidden" name="tid" value="01">
        <input type="hidden" name="msidn" value="6287875230364">
        <input type="hidden" name="typ" value="PREPAID">
        <input type="hidden" name="ip" value="192.168.1.1">
        <input type="hidden" name="cmd" value="prepaid-type">
        <table id="tab1">
          <tr>
            <td id="1">
              <button type="button" id="c1" class="unchecked">
                1
              </button>
              <input type="checkbox" name="checkAll" id="checkAll" style="display: none;">
              <input type="checkbox" name="book1" id="book" value="book1">
              <input type="checkbox" name="book2" id="book" value="book2">
              <input type="checkbox" name="book3" id="book" value="book3">
              <input type="checkbox" name="book4" id="book" value="book4">
              <input type="checkbox" name="book5" id="book" value="book5">
            </td>
          </tr>
          <tr>
            <td id="2">
              <button type="button" id="c2" class="unchecked">
                2
              </button>
              <input type="checkbox" name="checkAll" id="checkAll2" style="display: none;">
              <input type="checkbox" name="book1" id="book" value="book1">
              <input type="checkbox" name="book2" id="book" value="book2">
              <input type="checkbox" name="book3" id="book" value="book3">
              <input type="checkbox" name="book4" id="book" value="book4">
              <input type="checkbox" name="book5" id="book" value="book5">
            </td>
          </tr>
        </table>
        <input type="submit" name="sbm" value="Submit" class="button primary">
      </form>
    </div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用点击事件简化代码:

$('#c1').on('click', function() {
$(this).parents('td').find('input[type="checkbox"]').attr('checked', false);
});
$('input').on('click', function(e) {$(this).parents('td').find('input[type="checkbox"]').attr('checked',false);
   $(this).prop('checked', true);
    return true;
});

答案 2 :(得分:0)

这是完整的代码(保持html和css代码相同):

$('#c1').on('click', function() {
    $(this).toggleClass('checked unchecked');
    $(this).parents('tbody').find('input[type="checkbox"]').attr('checked', false);
    if($(this).hasClass('checked')) {
        $('input#checkAll').prop('checked', true);
    } else {
        $('#checkAll').attr('checked', false);
    }

});
$('input').on('click', function(e) {
    $(this).parents('tbody').find('input[type="checkbox"]').attr('checked',false);;
    $(this).prop('checked', true);
    return true;
});

$('#c2').on('click', function() {
    $(this).toggleClass('checked unchecked');
    $(this).parents('tbody').find('input[type="checkbox"]').attr('checked', false);
    if($(this).hasClass('checked')) {
        $('input#checkAll2').prop('checked', true);
    } else {
        $('input#checkAll2').attr('checked', false);
    }
});