JQuery kullanarak bir düğmeyle tüm onay kutularını nasıl işaretleyebilir / işaretlerini nasıl kaldırabilirim?


158

JQuery kullanarak tüm onay kutularını işaretlemek / işaretini kaldırmak çalışıyorum. Şimdi üst onay kutusunu işaretleyerek / işaretini kaldırarak tüm alt onay kutuları seçiliyor / seçimi kaldırılıyor, üst onay kutusunun metni de kontrol / onay işaretine değiştiriliyor.

Şimdi ebeveyn onay kutusunu bir giriş düğmesiyle değiştirmek ve düğmedeki metni kontrol etmek / işaretini kaldırmak için değiştirmek istiyorum. Kod var, lütfen herkes kodu değiştirebilir mi?

    $( 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


Öğreticiyi jQuery ile kontrol edin freakyjolly.com/…
Code Spy

Yanıtlar:


228

Bunu dene :

$(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
Geçiş olarak -1 bu şekilde çalışmak için tasarlanmamıştır: api.jquery.com/toggle (en azından mevcut sürüm)
estani

2
Sadece bir düğme için çalışır, birkaçına ihtiyacınız varsa kullanmak en iyisidir.click()
2013'te foochow

5
Uyarı: bu cevap, formunuzdaki her onay kutusunu tam anlamıyla kontrol eder. Bunu istemiyorsanız atlayın. Birden fazla kontrol için bu cevap bana yardımcı oldu: stackoverflow.com/a/27148382/3448554
Kelsey Hannan

1
Bu kodu denedim, ancak onay kutum neden yok oluyor? xD ve üzerinde "display: none" özelliği var
melvnberd

10
JQuery en yeni sürümleri ile, .attr()ve removeAttr()"işaretli" özniteliği ile kullanılmamalıdır. Olarak removeAttr()özniteliği olarak ayarlamak yerine kaldıracak false. .prop('checked', true)veya .prop('checked', false)@ richard-garside cevabında açıklandığı gibi kullanılmalıdır.
David Torres

110

Bu bulduğum en kısa yol (jQuery1.6 + 'ya ihtiyaç duyuyor)

HTML:

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

JS:

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

.Prop kullanıyorum, çünkü giriş etiketinize açıkça işaretlenmiş bir özellik eklemediyseniz .attr jQuery 1.6+ içindeki onay kutuları için çalışmaz.

Misal-

$("#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>


Bunu nasıl kullanıyorsun? Bir keman görme şansı var mı?
Drewdavid

1
Basit cevap, ama OP bir düğme istedi
vphilipnyc

Bu şekilde "tümünün seçimini nasıl kaldırırsınız?"
Michal Skop

@MichalSkop Bu kod, #checkAll öğesinin işaretli olup olmadığına bağlı olarak seçer veya seçimini kaldırır. Tümünün işaretini kaldırmak istiyorsanız, false değerini bu $ ("input: checkbox"). Prop ('işaretli', yanlış);
Richard Garside

Teşekkürler, çok kolay!
viniciussvl

17

Bunu dene:

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


Evet, DOM LEVEL'den değişse bile bu kod mükemmel teşekkürler. Ben zor kod denendi, ama ben bile çok çalışmıyor diğer eklentileri denedim .. Bu mükemmel.
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
JQuery1.6 + kullanıyorsanız, .attr yerine .prop kullanın
Richard

5

Google etkinliğinin artık kullanılamadığı durumlarda jQuery 1.9+ ile uyumlu bir düğmeyi kullanarak onay kutularını değiştirmek için çözüm :

$('.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


Düğmeyi bir onay kutusu ve "giriş: onay kutusu" ile bir sınıfla değiştirdim, benim amacım için ve bu harika çalıştı!
RationalRabbit

5

Bunu dene:

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

eyaptığınızda oluşturulan olaydır clickve e.targettıklanan öğedir ( .checkAll), bu nedenle yalnızca checkedsınıf içeren öğelerin özelliğini koymanız gerekir.cb-element .checkAll` sınıfındaki öğeye benzer koymanız gerekir.

Not: Kötü İngilizcemi affedin!


1
Hey Ruben, OP'nin bu problemi tam olarak nasıl çözdüğünü anlayabilmesi için cevabınıza bir yorum eklemelisin
edi9999

Yardımınız için teşekkürler @ edi9999, ben bir acemiyim
Ruben Perez

1
Bu yanıt, daha iyi IMO'dur, çünkü kabul edilen cevap formunuzdaki tüm onay kutularını işaretleyecektir, deseniniz ise farklı HTML formu $ ("# id") veya $ (". Class") öğelerini $('#all_news_items').on('click', function(e) { $('.news-item-option').prop('checked', $(e.target).prop('checked')); }); , checkall olmadan gibi bir desenle kolayca hedefleyebilmenizi sağlar. diğer form öğelerine müdahale eden işlevler, böylece kolayca yeni bir checkall ekleyebilirsiniz:$('#all_specializations').on('click', function(e) { $('.specialization-option').prop('checked', $(e.target).prop('checked')); });
Kelsey Hannan

4

Bunu deneyebilirsin

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

Sınıf .checkAll, toplu işlemi denetleyen bir onay kutusudur


3

Ama kullanmak yerine Richard Garside en kısa cevap Kabul prop()içinde $(this).prop("checked")yerli JS kullanabilirsiniz size checkedözelliğini onay kutusunun gibi,

$("#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

JQuery kullanarak Ara özellikli Tümü işaretleyin / işaretini kaldırın

GetSelectedItems () yöntemini kullanarak Array'da Kontrol Edilen Öğeleri Alın

Kaynak Onay Kutusu Listesi Belirsiz Ana Kontrol ile Tümünü Seç / Seçimini Kaldır

resim açıklamasını buraya girin

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

En iyisi burada Çözüm Fiddle Kontrol

$("#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

Kullanıcı tüm onay kutularını seçerse, tüm onay kutularının işaretlenmesi ve kullanıcı herhangi bir onay kutusunun işaretinin kaldırılması durumunda tüm kodların işaretlenmesi kaldırılırsa aşağıdaki kod çalışır.

$("#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

bunu dene

$(".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
    }
});

Senaryonuzu denedim ama şans yok. Doğru uyguladıysam ya da uygulamazsam lütfen bunu görebilir misiniz? Demo
Ravi

1

Utanmaz öz tanıtım: bunun için bir jQuery eklentisi var .

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');
    }
});​

... ve işiniz bitti.

http://jsfiddle.net/mattball/NrM2P


1

bunu dene,

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

1

this.checkedOnay kutusunun geçerli durumunu doğrulamak için kullanabilirsiniz ,

$('.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

Tüm onay kutularını işaretlemek / işaretlerini kaldırmak için aşağıdaki kodu deneyin

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>

Bu Demo Bağlantısını Deneyin

Bunu yapmanın başka bir kısa yolu daha var, aşağıdaki örneğe bakın. Bu örnekte, tüm onay kutularının işaretli olup olmadığını işaretleyin / işaretini kaldırın, işaretlenirse tümü işaretlenir ve tümü işaretlenmezse işaretlenmez

$("#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

Bu sorunun eski olduğunu biliyorum, ancak çoğu insanın bir onay kutusu kullandığını fark ettim. Kabul edilen cevap bir düğme kullanır, ancak birkaç düğme ile çalışamaz (örneğin, sayfanın üst kısmında bir altta). İşte burada her ikisini de yapan bir değişiklik.

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;
    }
});

Bu, metin ve onay kutusu değerlerini değiştirerek istediğiniz kadar düğmeye sahip olmanızı sağlar. Bir e.preventDefault()arama ekledim, çünkü bu href="#"bölüm nedeniyle sayfanın üste atlamasını engelleyecektir .


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

Eğer memnun Could düzenleme bu kod soruya cevap verir niçin bir açıklama? Sadece kod yanıtları önerilmez, çünkü çözümü öğretmezler.
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

bunu kod bloğunuza ekleyin, hatta düğmenizi tıklayın

$('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

Tüm öğeler işaretli değilse / denetlenmemişse denetleyiciyi işaretleyin / kontrol edin.

JS:

e = onay kutusu kimliği t = onay kutusu (öğe) sınıfı n = onay kutusu tüm sınıfı kontrol et

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:

ALL controle sınıfını kontrol edin: 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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.