Bagaimana cara saya mencentang / menghapus centang semua kotak centang dengan tombol menggunakan jQuery?


158

Saya mencoba untuk mencentang / menghapus centang semua kotak centang menggunakan jQuery. Sekarang dengan mencentang / menghapus centang pada kotak centang induk, semua kotak centang anak dipilih / tidak dipilih juga dengan teks kotak centang induk diubah untuk memeriksa / menghapus centang.

Sekarang saya ingin mengganti kotak centang induk dengan tombol input, dan mengubah teks juga pada tombol untuk memeriksa / menghapus centang. Apakah ada kodenya, dapatkah ada yang mengubah kode itu?

    $( function() {
        $( '.checkAll' ).live( 'change', function() {
            $( '.cb-element' ).attr( 'checked', $( this ).is( ':checked' ) ? 'checked' : '' );
            $( this ).next().text( $( this ).is( ':checked' ) ? 'Uncheck All' : 'Check All' );
        });
        $( '.cb-element' ).live( 'change', function() {
            $( '.cb-element' ).length == $( '.cb-element:checked' ).length ? $( '.checkAll' ).attr( 'checked', 'checked' ).next().text( 'Uncheck All' ) : $( '.checkAll' ).attr( 'checked', '' ).next().text( 'Check All' );

        });
    });


   <input type="checkbox" class="checkAll" /> <b>Check All</b>

   <input type="checkbox" class="cb-element" /> Checkbox  1
   <input type="checkbox" class="cb-element" /> Checkbox  2
   <input type="checkbox" class="cb-element" /> Checkbox  3


Lihat Tutorial dengan jQuery freakyjolly.com/...
Code Spy

Jawaban:


228

Coba yang ini :

$(document).ready(function(){
    $('.check:button').toggle(function(){
        $('input:checkbox').attr('checked','checked');
        $(this).val('uncheck all');
    },function(){
        $('input:checkbox').removeAttr('checked');
        $(this).val('check all');        
    })
})

DEMO


6
-1 sebagai toggle tidak dimaksudkan untuk bekerja seperti itu: api.jquery.com/toggle (setidaknya versi saat ini)
estani

2
Hanya berfungsi untuk satu tombol, jika Anda memerlukan beberapa tombol, yang terbaik adalah menggunakan.click()
foochow

5
Kepala: jawaban ini memeriksa secara harfiah setiap kotak centang di formulir Anda. Lewati kecuali Anda menginginkannya. Untuk beberapa pemeriksaan, jawaban ini membantu saya: stackoverflow.com/a/27148382/3448554
Kelsey Hannan

1
Saya mencoba kode ini, tetapi mengapa kotak centang saya hilang? xD dan memiliki properti "display: none" di atasnya
melvnberd

10
Dengan versi terbaru dari jQuery, .attr()dan removeAttr()tidak boleh digunakan dengan atribut "checked". Seperti removeAttr()akan menghapus atribut alih-alih mengaturnya false. .prop('checked', true)atau .prop('checked', false)harus digunakan sebagai gantinya, seperti dijelaskan dalam jawaban @ richard-garside.
David Torres

110

Ini adalah cara terpendek yang saya temukan (perlu jQuery1.6 +)

HTML:

<input type="checkbox" id="checkAll"/>

JS:

$("#checkAll").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked"));
});

Saya menggunakan .prop sebagai .attr tidak berfungsi untuk kotak centang di jQuery 1.6+ kecuali Anda telah secara eksplisit menambahkan atribut yang dicentang ke tag input Anda.

Contoh-

$("#checkAll").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="#">
    <p><label><input type="checkbox" id="checkAll"/> Check all</label></p>
    
    <fieldset>
        <legend>Loads of checkboxes</legend>
        <p><label><input type="checkbox" /> Option 1</label></p>
        <p><label><input type="checkbox" /> Option 2</label></p>
        <p><label><input type="checkbox" /> Option 3</label></p>
        <p><label><input type="checkbox" /> Option 4</label></p>
    </fieldset>
</form>


Bagaimana Anda menggunakan ini? Apakah ada peluang melihat biola?
Drewdavid

1
Jawaban sederhana, tetapi OP ingin tombol
vphilipnyc

Bagaimana Anda "membatalkan pilihan" dengan cara ini?
Michal Skop

@MichalSkop Kode ini memilih atau membatalkan pilihan berdasarkan apakah #checkAll dicentang atau tidak. Jika Anda ingin menghapus centang semua maka Anda bisa menggunakan nilai false seperti $ ini ("input: checkbox"). Prop ('dicentang', false);
Richard Garside

Terima kasih, sangat mudah!
viniciussvl

17

Coba yang ini:

HTML

<input type="checkbox" name="all" id="checkall" />

JavaScript

$('#checkall:checkbox').change(function () {
   if($(this).attr("checked")) $('input:checkbox').attr('checked','checked');
   else $('input:checkbox').removeAttr('checked');
});​

DEMO


Ya terima kasih kode ini sempurna, walaupun ia berubah dari DOM LEVEL. Saya telah berusaha keras untuk kode, tetapi bahkan saya mencoba plugin lain yang juga tidak berfungsi .. Yang ini sempurna.
Rafee

14

Html

<input type="checkbox" name="select_all" id="select_all" class="checkAll" />

Javascript

    $('.checkAll').click(function(){
    if($(this).attr('checked')){
        $('input:checkbox').attr('checked',true);
    }
    else{
        $('input:checkbox').attr('checked',false);
    }
});

6
Gunakan .prop sebagai ganti .attr jika Anda menggunakan jQuery1.6 +
Richard Garside

5

Solusi untuk mengaktifkan kotak centang menggunakan tombol, kompatibel dengan jQuery 1.9+ di mana toogle-event tidak lagi tersedia :

$('.check:button').click(function(){
      var checked = !$(this).data('checked');
      $('input:checkbox').prop('checked', checked);
      $(this).val(checked ? 'uncheck all' : 'check all' )
      $(this).data('checked', checked);
});

DEMO


Mengganti tombol dengan kotak centang dan "input: kotak centang" dengan kelas, untuk keperluan saya, dan ini berhasil!
RationalRabbit

5

Coba ini:

$('.checkAll').on('click', function(e) {
     $('.cb-element').prop('checked', $(e.target).prop('checked'));
});

eadalah peristiwa yang dihasilkan ketika Anda melakukannya click, dan e.targetelemen diklik ( .checkAll), jadi Anda hanya perlu menempatkan properti checkedelemen dengan kelas .cb-elementseperti elemen dengan kelas .checkAll`.

PS: Maafkan bahasa Inggris saya yang buruk!


1
Hai Ruben, Anda harus menambahkan komentar pada jawaban Anda sehingga OP dapat memahami bagaimana Anda memecahkan masalah itu dengan tepat
edi9999

Terima kasih atas bantuan Anda @ edi9999, saya seorang pemula
Ruben Perez

1
Jawaban ini adalah IMO yang lebih baik karena jawaban yang diterima akan mencentang semua kotak centang di formulir Anda , sementara pola Anda memungkinkan Anda dengan mudah menargetkan elemen HTML $ ("# id") atau $ (". Class") elemen yang berbeda melalui pola seperti $('#all_news_items').on('click', function(e) { $('.news-item-option').prop('checked', $(e.target).prop('checked')); }); tanpa centang. fungsi mengganggu elemen bentuk lain, sehingga Anda dapat menambahkan checkall baru dengan mudah:$('#all_specializations').on('click', function(e) { $('.specialization-option').prop('checked', $(e.target).prop('checked')); });
Kelsey Hannan

4

Anda bisa mencoba ini

    $('.checkAll').on('click',function(){
        $('.checkboxes').prop('checked',$(this).prop("checked"));
    });`

Kelas .checkAlladalah kotak centang yang mengontrol tindakan massal


3

Setuju dengan jawaban singkat Richard Garside, tapi alih-alih menggunakan prop()di $(this).prop("checked")Anda dapat menggunakan JS asli checkedmilik kotak centang seperti,

$("#checkAll").change(function () {
    $("input:checkbox").prop('checked', this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="#">
    <p><label><input type="checkbox" id="checkAll"/> Check all</label></p>
    
    <fieldset>
        <legend>Loads of checkboxes</legend>
        <p><label><input type="checkbox" /> Option 1</label></p>
        <p><label><input type="checkbox" /> Option 2</label></p>
        <p><label><input type="checkbox" /> Option 3</label></p>
        <p><label><input type="checkbox" /> Option 4</label></p>
    </fieldset>
</form>


3

Periksa / Hapus centang Semua dengan properti Menengah menggunakan jQuery

Dapatkan Item yang Dicentang di Array menggunakan metode getSelectedItems ()

Source Checkbox List Select / Unselect All dengan Indeterminate Master Check

masukkan deskripsi gambar di sini

HTML

<div class="container">
  <div class="card">
    <div class="card-header">
      <ul class="list-group list-group-flush">
        <li class="list-group-item">
          <input
            class="form-check-input"
            type="checkbox"
            value="selectAll"
            id="masterCheck"
          />
          <label class="form-check-label" for="masterCheck">
            Select / Unselect All
          </label>
        </li>
      </ul>
    </div>
    <div class="card-body">
      <ul class="list-group list-group-flush" id="list-wrapper">
        <li class="list-group-item">
          <input
            class="form-check-input"
            type="checkbox"
            value="item1"
            id="item1"
          />
          <label class="form-check-label" for="item1">
            Item 1
          </label>
        </li>
        <li class="list-group-item">
          <input
            class="form-check-input"
            type="checkbox"
            value="item2"
            id="item2"
          />
          <label class="form-check-label" for="item2">
            Item 2
          </label>
        </li>
        <li class="list-group-item">
          <input
            class="form-check-input"
            type="checkbox"
            value="item3"
            id="item3"
          />
          <label class="form-check-label" for="item3">
            Item 3
          </label>
        </li>
        <li class="list-group-item">
          <input
            class="form-check-input"
            type="checkbox"
            value="item4"
            id="item4"
          />
          <label class="form-check-label" for="item4">
            Item 4
          </label>
        </li>
        <li class="list-group-item">
          <input
            class="form-check-input"
            type="checkbox"
            value="item5"
            id="item5"
          />
          <label class="form-check-label" for="item5">
            Item 5
          </label>
        </li>
        <li class="list-group-item" id="selected-values"></li>
      </ul>
    </div>
  </div>
</div>

jQuery

  $(function() {
    // ID selector on Master Checkbox
    var masterCheck = $("#masterCheck");
    // ID selector on Items Container
    var listCheckItems = $("#list-wrapper :checkbox");

    // Click Event on Master Check
    masterCheck.on("click", function() {
      var isMasterChecked = $(this).is(":checked");
      listCheckItems.prop("checked", isMasterChecked);
      getSelectedItems();
    });

    // Change Event on each item checkbox
    listCheckItems.on("change", function() {
      // Total Checkboxes in list
      var totalItems = listCheckItems.length;
      // Total Checked Checkboxes in list
      var checkedItems = listCheckItems.filter(":checked").length;

      //If all are checked
      if (totalItems == checkedItems) {
        masterCheck.prop("indeterminate", false);
        masterCheck.prop("checked", true);
      }
      // Not all but only some are checked
      else if (checkedItems > 0 && checkedItems < totalItems) {
        masterCheck.prop("indeterminate", true);
      }
      //If none is checked
      else {
        masterCheck.prop("indeterminate", false);
        masterCheck.prop("checked", false);
      }
      getSelectedItems();
    });

    function getSelectedItems() {
      var getCheckedValues = [];
      getCheckedValues = [];
      listCheckItems.filter(":checked").each(function() {
        getCheckedValues.push($(this).val());
      });
      $("#selected-values").html(JSON.stringify(getCheckedValues));
    }
  });

2

Solusi terbaik di sini Periksa Fiddle

$("#checkAll").change(function () {
    $("input:checkbox.cb-element").prop('checked', $(this).prop("checked"));
});
$(".cb-element").change(function () {
        _tot = $(".cb-element").length                        
        _tot_checked = $(".cb-element:checked").length;

        if(_tot != _tot_checked){
            $("#checkAll").prop('checked',false);
        }
});
<input type="checkbox" id="checkAll"/> ALL

<br />

<input type="checkbox" class="cb-element" /> Checkbox  1
<input type="checkbox" class="cb-element" /> Checkbox  2
<input type="checkbox" class="cb-element" /> Checkbox  3

2

Kode di bawah ini akan berfungsi jika pengguna memilih semua kotak centang kemudian mencentang semua kotak centang akan dicentang dan jika pengguna membatalkan pilihan satu kotak centang maka centang semua kotak centang akan dicentang.

$("#checkall").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked"));
});

$(".cb-element").change(function () {
  if($(".cb-element").length==$(".cb-element:checked").length)
    $("#checkall").prop('checked', true);
  else
    $("#checkall").prop('checked', false);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="all" id="checkall" />Check All</br>

<input type="checkbox" class="cb-element" /> Checkbox  1</br>
<input type="checkbox" class="cb-element" /> Checkbox  2</br>
<input type="checkbox" class="cb-element" /> Checkbox  3


1

coba ini

$(".checkAll").click(function() {
    if("checkall" === $(this).val()) {
         $(".cb-element").attr('checked', true);
         $(this).val("uncheckall"); //change button text
    }
    else if("uncheckall" === $(this).val()) {
         $(".cb-element").attr('checked', false);
         $(this).val("checkall"); //change button text
    }
});

Saya sudah mencoba skrip Anda, tetapi tidak berhasil. Bisakah Anda melihat ini jika saya telah menerapkan dengan benar atau tidak ..? Demo
Ravi

1

Promosi diri yang tidak tahu malu: ada plugin jQuery untuk itu .

HTML:

<form action="#" id="myform">
    <div><input type="checkbox" id="checkall"> <label for="checkall"> Check all</label></div>
    <fieldset id="slaves">
        <div><label><input type="checkbox"> Checkbox</label></div>
        <div><label><input type="checkbox"> Checkbox</label></div>
        <div><label><input type="checkbox"> Checkbox</label></div>
        <div><label><input type="checkbox"> Checkbox</label></div>
        <div><label><input type="checkbox"> Checkbox</label></div>
    </fieldset>
</form>

JS:

$('#checkall').checkAll('#slaves input:checkbox', {
    reportTo: function () {
        var prefix = this.prop('checked') ? 'un' : '';
        this.next().text(prefix + 'check all');
    }
});​

... dan kamu sudah selesai.

http://jsfiddle.net/mattball/NrM2P


1

coba ini,

<input type="checkbox" class="checkAll" onclick="$('input[type=checkbox][class=cb-element]').attr('checked',this.checked)">

1

Anda dapat menggunakan this.checkeduntuk memverifikasi kondisi kotak centang saat ini,

$('.checkAll').change(function(){
    var state = this.checked; //checked ? - true else false

    state ? $(':checkbox').prop('checked',true) : $(':checkbox').prop('checked',false);

    //change text
    state ? $(this).next('b').text('Uncheck All') : $(this).next('b').text('Check All')
});


1

Coba kode di bawah ini untuk mencentang / menghapus centang semua kotak centang

jQuery(document).ready(function() {
    $("#check_uncheck").change(function() {
        if ($("#check_uncheck:checked").length) {
            $(".checkboxes input:checkbox").prop("checked", true);
        } else {
            $(".checkboxes input:checkbox").prop("checked", false);
        }
    })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="checkbox" name="check_uncheck" id="check_uncheck" /> Check All/Uncheck All
<br/>
<br/>
<div class="checkboxes">
    <input type="checkbox" name="check" id="check" /> Check Box 1
    <br/>
    <input type="checkbox" name="check" id="check" /> Check Box 2
    <br/>
    <input type="checkbox" name="check" id="check" /> Check Box 3
    <br/>
    <input type="checkbox" name="check" id="check" /> Check Box 4
</div>

Coba Tautan Demo ini

Ada juga cara singkat lain untuk melakukan ini, lihat contoh di bawah ini. Dalam contoh ini centang / hapus centang semua kotak centang dicentang atau tidak jika dicentang maka semua akan diperiksa dan jika tidak semua akan dicentang

$("#check_uncheck").change(function() {
    $(".checkboxes input:checkbox").prop("checked",$(this).is(':checked'));
})
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <input type="checkbox" name="check_uncheck" id="check_uncheck" /> Check All/Uncheck All
    <br/>
    <br/>
    <div class="checkboxes">
        <input type="checkbox" name="check" id="check" /> Check Box 1
        <br/>
        <input type="checkbox" name="check" id="check" /> Check Box 2
        <br/>
        <input type="checkbox" name="check" id="check" /> Check Box 3
        <br/>
        <input type="checkbox" name="check" id="check" /> Check Box 4
    </div>


0

Saya tahu pertanyaan ini sudah lama tetapi, saya perhatikan sebagian besar orang menggunakan kotak centang. Jawaban yang diterima menggunakan tombol, tetapi tidak dapat bekerja dengan beberapa tombol (mis. Satu di atas halaman satu di bawah). Jadi di sini adalah modifikasi yang melakukan keduanya.

HTML

<a href="#" class="check-box-machine my-button-style">Check All</a>

jQuery

var ischecked = false;
$(".check-box-machine").click(function(e) {
    e.preventDefault();
    if (ischecked == false) {
        $("input:checkbox").attr("checked","checked");
        $(".check-box-machine").html("Uncheck All");
        ischecked = true;
    } else {
        $("input:checkbox").removeAttr("checked");
        $(".check-box-machine").html("Check All");
        ischecked = false;
    }
});

Ini akan memungkinkan Anda untuk memiliki tombol sebanyak yang Anda inginkan dengan mengubah nilai teks dan kotak centang. Saya menyertakan e.preventDefault()panggilan karena ini akan menghentikan halaman dari melompat ke atas karena href="#"bagian itu.


0
$(function () {
    $('input#check_all').change(function () {
        $("input[name='input_ids[]']").prop('checked', $(this).prop("checked"));
    });
});

Bisakah Anda mengedit penjelasan mengapa kode ini menjawab pertanyaan? Jawaban hanya kode tidak disarankan, karena mereka tidak mengajarkan solusi.
Scimonster


0
<script type="text/javascript">
    function myFunction(checked,total_boxes){ 
         for ( i=0 ; i < total_boxes ; i++ ){ 
           if (checked){   
             document.forms[0].checkBox[i].checked=true; 
            }else{  
             document.forms[0].checkBox[i].checked=false; 
            } 
        }   
    } 
</script>
    <body>
        <FORM> 
            <input type="checkbox" name="checkBox" >one<br> 
            <input type="checkbox" name="checkBox" >two<br> 
            <input type="checkbox" name="checkBox" >three<br> 
            <input type="checkbox" name="checkBox" >four<br> 
            <input type="checkbox" name="checkBox" >five<br> 
            <input type="checkbox" name="checkBox" >six<br> 
            <input type="checkbox" name="checkBox" >seven<br> 
            <input type="checkbox" name="checkBox" >eight<br> 
            <input type="checkbox" name="checkBox" >nine<br>
            <input type="checkbox" name="checkBox" >ten<br>  s
            <input type=button name="CheckAll" value="Select_All" onClick="myFunction(true,10)"> 
            <input type=button name="UnCheckAll" value="UnCheck All Boxes" onClick="myFunction(false,10)"> 
        </FORM> 
    </body>

0

tambahkan ini di blok kode Anda, atau bahkan klik tombol Anda

$('input:checkbox').attr('checked',false);

0
$(document).ready( function() {
        // Check All
        $('.checkall').click(function () {          
            $(":checkbox").attr("checked", true);
        });
        // Uncheck All
        $('.uncheckall').click(function () {            
            $(":checkbox").attr("checked", false);
        });
    });

-1

Periksa Semua dengan hapus centang pengontrol / centang jika semua item / tidak dicentang

JS:

e = kotak centang id t = kotak centang (item) kelas n = kotak centang centang semua kelas

function checkAll(e,t,n){jQuery("#"+e).click(function(e){if(this.checked){jQuery("."+t).each(function(){this.checked=true;jQuery("."+n).each(function(){this.checked=true})})}else{jQuery("."+t).each(function(){this.checked=false;jQuery("."+n).each(function(){this.checked=false})})}});jQuery("."+t).click(function(e){var r=jQuery("."+t).length;var i=0;var s=0;jQuery("."+t).each(function(){if(this.checked==true){i++}if(this.checked==false){s++}});if(r==i){jQuery("."+n).each(function(){this.checked=true})}if(i<r){jQuery("."+n).each(function(){this.checked=false})}})}

HTML:

Periksa SEMUA kelas kontrol: chkall_ctrl

<input type="checkbox"name="chkall" id="chkall_up" class="chkall_ctrl"/>
<br/>
1.<input type="checkbox" value="1" class="chkall" name="chk[]" id="chk1"/><br/>
2.<input type="checkbox" value="2" class="chkall" name="chk[]" id="chk2"/><br/>
3.<input type="checkbox" value="3" class="chkall" name="chk[]" id="chk3"/><br/>
<br/>
<input type="checkbox"name="chkall" id="chkall_down" class="chkall_ctrl"/>

<script>
jQuery(document).ready(function($)
{
  checkAll('chkall_up','chkall','chkall_ctrl');
  checkAll('chkall_down','chkall','chkall_ctrl');
});
 </script>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.