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
Ravi
sumber
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

Prakash
sumber
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>

Richard Garside
sumber
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

Rodgers
sumber
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);
    }
});
Crisalin Petrovschi
sumber
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

Michal R
sumber
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!

Ruben Perez
sumber
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

Yasir Ijaz
sumber
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>

Rohan Kumar
sumber
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));
    }
  });
Kode Mata-mata
sumber
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
Rupak Das
sumber
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

Hussain
sumber
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
    }
});
naiquevin
sumber
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

Matt Ball
sumber
1

coba ini,

<input type="checkbox" class="checkAll" onclick="$('input[type=checkbox][class=cb-element]').attr('checked',this.checked)">
Kautil
sumber
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')
});

Shaunak D
sumber
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>

Pankaj Makwana
sumber
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.

foochow
sumber
0
$(function () {
    $('input#check_all').change(function () {
        $("input[name='input_ids[]']").prop('checked', $(this).prop("checked"));
    });
});
Rokibul Hasan
sumber
Bisakah Anda mengedit penjelasan mengapa kode ini menjawab pertanyaan? Jawaban hanya kode tidak disarankan, karena mereka tidak mengajarkan solusi.
Scimonster
0

Berikut ini tautan, yang digunakan untuk mencentang dan menghapus centang pada kotak centang induk dan semua kotak centang anak dipilih dan tidak dipilih.

jquery centang hapus centang semua kotak centang Menggunakan Jquery Dengan Demo

$(function () {
        $("#select-all").on("click", function () {
            var all = $(this);
            $('input:checkbox').each(function () {
                $(this).prop("checked", all.prop("checked"));
            });
        });
    });
Bharath Kumaar
sumber
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>
Bhushan Sangani
sumber
0

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

$('input:checkbox').attr('checked',false);
John
sumber
0
$(document).ready( function() {
        // Check All
        $('.checkall').click(function () {          
            $(":checkbox").attr("checked", true);
        });
        // Uncheck All
        $('.uncheckall').click(function () {            
            $(":checkbox").attr("checked", false);
        });
    });
Vicky
sumber
-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>
D4Y.be
sumber