JQuery kullanarak tüm onay kutuları nasıl kontrol edilir?


119

JQuery konusunda uzman değilim ama uygulamam için küçük bir betik oluşturmaya çalıştım. Tüm onay kutularını işaretlemek istiyorum ama doğru çalışmıyor.

Önce kullanmayı denedim attrsonra denedim propama yanlış bir şey yapıyorum.

Önce bunu denedim:

$("#checkAll").change(function(){

  if (! $('input:checkbox').is('checked')) {
      $('input:checkbox').attr('checked','checked');
  } else {
      $('input:checkbox').removeAttr('checked');
  }       
});

Ama bu işe yaramadı.

Sonraki: Bu, yukarıdaki koddan daha iyi çalıştı

$("#checkAll").change(function(){

  if (! $('input:checkbox').is('checked')) {
      $('input:checkbox').prop('checked',true);
  } else {
      $('input:checkbox').prop('checked', false);
  }       
});

Her iki örnek de işe yaramıyor.

JSFiddle: http://jsfiddle.net/hhZfu/4/


olası yinelenen .attr () vs .prop ()
Liam


Yanıtlar:


295

İşaretli özelliği ayarlamak için .prop () kullanmanız gerekir

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

Demo: Keman


1
Hızlı cevap için teşekkürler. Bu iyi çalışıyor ancak uygulamamda bir sahte çek var. Sayfayı yenilediğimde ctrl+rve onay kutusunu tıkladığımda checkAllbeni kontrol etmiyor. Bundan sonra başarılı olmak için tekrar kontrol etmeliyim. Yani checkAlltek tıklamayla (bir) çalışmayan 2x tıklamaya ihtiyacım var ? Bu kodu kopyalayıp yapıştırıyorum ve işlev yapıyorum checkAll()ve onay kutusunda belirledimonclick="return checkAll()"
Ivan

3
JQuery kullanacaksanız, jQuery kullanın. JQuery'yi satır içi Javascript ile karıştırmak iyi bir fikir değildir. Örneğin, bu kötü: <elementtag id="someID" onclick="javascript code here"--- Bunun yerine, jQuery kullanın:$('#someID').click(function() { checkAll() });
cssyphus

4
Gönderinizin bu cevabı arasındaki fark nedir , neden kullanılır not(this).prop?
shaijut

1
@ArunPJohny, id tek bir sayfada benzersiz olmalı, sınıf örneğini kullanarak aynı işlevi nasıl kullanabiliriz jsfiddle.net/52uny55w
Krishna Jonnalagadda

@ArunPJohny, zaman ayırdığınız için teşekkürler. Sizden jquery hakkında birçok şey öğrenmek istiyorum, jquery
Krishna Jonnalagadda

44

Basitçe kullanmak checkedözelliğini checkAllve kullanım kullanımı ) pervane ( kontrol özelliği için yerine attr

Canlı Demo

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

İşaretli gibi özellikler için attr () yerine prop () kullanın

JQuery 1.6'dan itibaren, .attr () yöntemi ayarlanmayan öznitelikler için tanımsız döndürür. Form öğelerinin işaretli, seçili veya devre dışı bırakılmış durumu gibi DOM özelliklerini almak ve değiştirmek için .prop () yöntemini kullanın

Onay kutuları için aynı kimliğe sahipsiniz ve benzersiz olmalıdır . İstemediğiniz onay kutularını içermemesi için bağımlı onay kutuları olan bazı sınıfları kullanmanız daha iyi olur . $('input:checkbox')Sayfadaki tüm onay kutularını seçeceği gibi . Sayfanız yeni onay kutularıyla genişletilirse, bunlar da seçilir / seçilmeden çıkar. Hangi amaçlanan davranış olmayabilir.

Canlı Demo

$('#checkAll').click(function () {    
    $(':checkbox.checkItem').prop('checked', this.checked);    
});

42

Tam bir çözüm burada.

$(document).ready(function() {
    $("#checkedAll").change(function() {
        if (this.checked) {
            $(".checkSingle").each(function() {
                this.checked=true;
            });
        } else {
            $(".checkSingle").each(function() {
                this.checked=false;
            });
        }
    });

    $(".checkSingle").click(function () {
        if ($(this).is(":checked")) {
            var isAllChecked = 0;

            $(".checkSingle").each(function() {
                if (!this.checked)
                    isAllChecked = 1;
            });

            if (isAllChecked == 0) {
                $("#checkedAll").prop("checked", true);
            }     
        }
        else {
            $("#checkedAll").prop("checked", false);
        }
    });
});

Html şöyle olmalıdır:

İşaretli üç onay kutusundaki tek onay kutusu seçilecek ve seçimi kaldırılacaktır.

<input type="checkbox" name="checkedAll" id="checkedAll" />

<input type="checkbox" name="checkAll" class="checkSingle" />
<input type="checkbox" name="checkAll" class="checkSingle" />
<input type="checkbox" name="checkAll" class="checkSingle" />

Umarım bu, benim için yaptığı gibi birine yardımcı olur.

JS Fiddle https://jsfiddle.net/52uny55w/


3
Kutulardan birinin işaretini kaldırırsanız, "Tümünü Kontrol Et" kutusu da işaretlenmediği için bu çözümü seviyorum. Benzer şekilde, ilgili tüm kutuları manuel olarak işaretlerseniz, "Tümünü Kontrol Et" kutusu da işaretlenir. Bu harika bir UI geri bildirimi!
HPWD

Şu şekilde $("#checkedAll").changedeğiştirerek işlevi var val = this.checked; $(".checkSingle").each( function() { this.checked=val; });
kısaltabilirsiniz

Ayrıca, isAllCheckeddeğişkeni olarak yeniden adlandırmanın daha iyi olacağını düşünüyorum isThereUncheckedveya unCheckedbu nedenle değişkenin ne için kullanıldığına dair daha açıklayıcı olacaktır.
Gellie Ann

Bu çözümü aldım, teşekkür için aradığım şey bu
Ajay Kumar

10

Bence, kullanıcı tüm onay kutusunu manuel olarak seçtiğinde otomatik olarak işaretlenmeli veya kullanıcı, seçilen tüm onay kutularından birinin işaretini kaldırmalı ve ardından onay kutusunun işaretini otomatik olarak kaldırmalıdır. İşte benim kodum ..

$('#checkall').change(function () {
    $('.cb-element').prop('checked',this.checked);
});

$('.cb-element').change(function () {
 if ($('.cb-element:checked').length == $('.cb-element').length){
  $('#checkall').prop('checked',true);
 }
 else {
  $('#checkall').prop('checked',false);
 }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/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


Teşekkür ederim! Bunu tercih ediyorum çünkü tüm onay kutusu işaretlendikten sonra, bunlardan birinin işaretini kaldırdığımızda, tüm onay kutularının işareti kaldırılacaktır.
Rizqi N. Assyaufi

7

Neden bunu denemiyorsunuz (2. satırda 'form #' html formunuz için uygun seçiciyi koymanız gerekir):

$('.checkAll').click(function(){
    $('form#myForm input:checkbox').each(function(){
        $(this).prop('checked',true);
   })               
});

$('.uncheckAll').click(function(){
    $('form#myForm input:checkbox').each(function(){
        $(this).prop('checked',false);
   })               
});

HTML'niz şöyle olmalıdır:

<form id="myForm">
      <span class="checkAll">checkAll</span>
      <span class="uncheckAll">uncheckAll</span>
      <input type="checkbox" class="checkSingle"></input>
      ....
</form>

Umarım bu yardımcı olur.


5

HTML:

<p><input type="checkbox" id="parent" /> Check/Uncheck All</p>
<ul>
  <li>
    <input type="checkbox" class="child" /> Checkbox 1</li>
  <li>
    <input type="checkbox" class="child" /> Checkbox 2</li>
  <li>
    <input type="checkbox" class="child" /> Checkbox 3</li>
</ul>

jQuery:

$(document).ready(function() {
  $("#parent").click(function() {
    $(".child").prop("checked", this.checked);
  });

  $('.child').click(function() {
    if ($('.child:checked').length == $('.child').length) {
      $('#parent').prop('checked', true);
    } else {
      $('#parent').prop('checked', false);
    }
  });
});

Demo: FIDDLE



2
$('#checkAll').on('change', function(){
    if($(this).attr('checked')){
        $('input[type=checkbox]').attr('checked',true);
    }
    else{
        $('input[type=checkbox]').removeAttr('checked');
    }
});

1

Hepsini yönetmek için bir onay kutusu

Hafif bir eklenti aracılığıyla onay kutularını kontrol etmek için hala eklenti arayanlar, UniformJS ve iCheck için kullanıma hazır bir desteğe sahiptir ve kontrollü onay kutularından en az birinin işareti kaldırıldığında (ve tüm kontrollü onay kutuları işaretlendiğinde işaretlenir) course) Bir jQuery checkAll eklentisi oluşturdum .

Dokümantasyon sayfasındaki örnekleri kontrol etmekten çekinmeyin .


Bu soru örneği için yapmanız gereken tek şey:

$( "#checkAll" ).checkall({
    target: "input:checkbox"
});

Bu açık ve basit değil mi?


1
    <p id="checkAll">Check All</p>
<hr />
<input type="checkbox" class="checkItem">Item 1
<input type="checkbox" class="checkItem">Item 2
<input type="checkbox" class="checkItem">Item3

Ve jquery

$(document).on('click','#checkAll',function () {
     $('.checkItem').not(this).prop('checked', this.checked);
 });

1

Birden fazla .prop()sonuç döndürse bile jQuery Seçicinin sonuçları üzerinde doğrudan çalışabilirsiniz . Yani:

$("input[type='checkbox']").prop('checked', true)


0

Genellikle en az 1 bağımlı onay kutusu işaretli değilse ana onay kutusunun işaretinin kaldırılmasını ve tüm bağımlı onay kutuları işaretliyse işaretlenmesini de istersiniz:

/**
 * Checks and unchecks checkbox-group with a master checkbox and slave checkboxes
 * @param masterId is the id of master checkbox
 * @param slaveName is the name of slave checkboxes
 */
function checkAll(masterId, slaveName) {
    $master = $('#' + masterId);
    $slave = $('input:checkbox[name=' + slaveName + ']');

    $master.click(function(){
        $slave.prop('checked', $(this).prop('checked'));
        $slave.trigger('change');
    });

    $slave.change(function() {
        if ($master.is(':checked') && $slave.not(':checked').length > 0) {
            $master.prop('checked', false);
        } else if ($master.not(':checked') && $slave.not(':checked').length == 0) {
        $master.prop('checked', 'checked');
    }
    });
}

Ve herhangi bir kontrolü etkinleştirmek istiyorsanız (örneğin Remove Alldüğme veya Add Somethingdüğme), en az bir onay kutusu işaretlendiğinde ve hiçbir onay kutusu işaretlenmediğinde devre dışı bırakın :

/**
 * Checks and unchecks checkbox-group with a master checkbox and slave checkboxes,
 * enables or disables a control when a checkbox is checked
 * @param masterId is the id of master checkbox
 * @param slaveName is the name of slave checkboxes
 */
function checkAllAndSwitchControl(masterId, slaveName, controlId) {
    $master = $('#' + masterId);
    $slave = $('input:checkbox[name=' + slaveName + ']');

    $master.click(function(){
        $slave.prop('checked', $(this).prop('checked'));
        $slave.trigger('change');
    });

    $slave.change(function() {
        switchControl(controlId, $slave.filter(':checked').length > 0);
        if ($master.is(':checked') && $slave.not(':checked').length > 0) {
            $master.prop('checked', false);
        } else if ($master.not(':checked') && $slave.not(':checked').length == 0) {
        $master.prop('checked', 'checked');
    }
    });
}

/**
 * Enables or disables a control
 * @param controlId is the control-id
 * @param enable is true, if control must be enabled, or false if not
 */
function switchControl(controlId, enable) {
    var $control = $('#' + controlId);
    if (enable) {
        $control.removeProp('disabled');
    } else {
        $control.prop('disabled', 'disabled');
    }
}

0

HTML

<HTML>
<HEAD>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <TITLE>Multiple Checkbox Select/Deselect - DEMO</TITLE>
</HEAD>
<BODY>
    <H2>Multiple Checkbox Select/Deselect - DEMO</H2>
<table border="1">
<tr>
    <th><input type="checkbox" id="selectall"/></th>
    <th>Cell phone</th>
    <th>Rating</th>
</tr>
<tr>
    <td align="center"><input type="checkbox" class="case" name="case" value="1"/></td>
    <td>BlackBerry Bold 9650</td>
    <td>2/5</td>
</tr>
<tr>
    <td align="center"><input type="checkbox" class="case" name="case" value="2"/></td>
    <td>Samsung Galaxy</td>
    <td>3.5/5</td>
</tr>
<tr>
    <td align="center"><input type="checkbox" class="case" name="case" value="3"/></td>
    <td>Droid X</td>
    <td>4.5/5</td>
</tr>
<tr>
    <td align="center"><input type="checkbox" class="case" name="case" value="4"/></td>
    <td>HTC Desire</td>
    <td>3/5</td>
</tr>
<tr>
    <td align="center"><input type="checkbox" class="case" name="case" value="5"/></td>
    <td>Apple iPhone 4</td>
    <td>5/5</td>
</tr>
</table>

</BODY>
</HTML>

jQuery Kodu

<SCRIPT language="javascript">
$(function(){

    // add multiple select / deselect functionality
    $("#selectall").click(function () {
          $('.case').attr('checked', this.checked);
    });

    // if all checkbox are selected, check the selectall checkbox
    // and viceversa
    $(".case").click(function(){

        if($(".case").length == $(".case:checked").length) {
            $("#selectall").attr("checked", "checked");
        } else {
            $("#selectall").removeAttr("checked");
        }

    });
});
</SCRIPT>

Demoyu Görüntüle

Demoyu görmek için burayı tıklayın


0

kullanmak ) (.prop bir özelliğin değerini almak için

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

0

Burada yayınlanan pek çok cevap olduğunu biliyorum ama bunu kodun optimizasyonu için göndermek istiyorum ve bunu global olarak kullanabiliriz.

elimden gelenin en iyisini denedim

/*----------------------------------------
 *  Check and uncheck checkbox which will global
 *  Params : chk_all_id=id of main checkbox which use for check all dependant, chk_child_pattern=start pattern of the remain checkboxes 
 *  Developer Guidline : For to implement this function Developer need to just add this line inside checkbox {{ class="check_all" dependant-prefix-id="PATTERN_WHATEVER_U_WANT" }}
 ----------------------------------------*/
function checkUncheckAll(chk_all_cls,chiled_patter_key){
    if($("."+chk_all_cls).prop('checked') == true){
        $('input:checkbox[id^="'+chiled_patter_key+'"]').prop('checked', 'checked');
    }else{
        $('input:checkbox[id^="'+chiled_patter_key+'"]').removeProp('checked', 'checked');
    }        
}

if($(".check_all").get(0)){
    var chiled_patter_key = $(".check_all").attr('dependant-prefix-id');

    $(".check_all").on('change',function(){        
        checkUncheckAll('check_all',chiled_patter_key);
    });

    /*------------------------------------------------------
     * this will remain checkbox checked if already checked before ajax call! :)
     ------------------------------------------------------*/
    $(document).ajaxComplete(function() {
        checkUncheckAll('check_all',chiled_patter_key);
    });
}

Umarım bu yardımcı olacak!


0
function checkAll(class_name) {
    $("." + class_name).each(function () { 
        if (this.checked == true) 
            this.checked = false; 
        else 
            this.checked = true; 
    }); 
}

0

checkall, tüm onay kutusunun kimliğidir ve cb-child, checkall tıklama olayına bağlı olarak işaretlenecek ve işaretlenmeyecek her onay kutusunun adıdır

$("#checkall").click(function () {
                        if(this.checked){
                            $("input[name='cb-child']").each(function (i, el) {
                                el.setAttribute("checked", "checked");
                                el.checked = true;
                                el.parentElement.className = "checked";

                            });
                        }else{
                            $("input[name='cb-child']").each(function (i, el) {
                                el.removeAttribute("checked");
                                el.parentElement.className = "";
                            });
                        }
                    });

0

* TÜM KONTROL KUTUSUNU SEÇMEK İÇİN JAVA KUTUSU *

En İyi Çözüm .. Deneyin

<script type="text/javascript">
        function SelectAll(Id) {
            //get reference of GridView control
            var Grid = document.getElementById("<%= GridView1.ClientID %>");
            //variable to contain the cell of the Grid
            var cell;

            if (Grid.rows.length > 0) {
                //loop starts from 1. rows[0] points to the header.
                for (i = 1; i < grid.rows.length; i++) {
                    //get the reference of first column
                    cell = grid.rows[i].cells[0];

                    //loop according to the number of childNodes in the cell
                    for (j = 0; j < cell.childNodes.length; j++) {
                        //if childNode type is CheckBox                 
                        if (cell.childNodes[j].type == "checkbox") {
                            //Assign the Status of the Select All checkbox to the cell checkbox within the Grid
                            cell.childNodes[j].checked = document.getElementById(Id).checked;
                        }
                    }
                }
            }
        }
    </script>

-1

Aşağıdaki Basit Kodu kullanabilirsiniz:

function checkDelBoxes(pForm, boxName, parent)
{
    for (i = 0; i < pForm.elements.length; i++)
        if (pForm.elements[i].name == boxName)
            pForm.elements[i].checked = parent;
}

Kullanım Örneği:

<a href="javascript:;" onclick="javascript:checkDelBoxes($(this).closest('form').get(0), 'CheckBox[]', true);return false;"> Select All
</a>
<a href="javascript:;" onclick="javascript:checkDelBoxes($(this).closest('form').get(0), 'CheckBox[]', false);return false;"> Unselect All
</a>

-1
if(isAllChecked == 0)
{ 
    $("#select_all").prop("checked", true); 
}   

lütfen yukarıdaki satırı şu şekilde değiştirin

if(isAllChecked == 0)
{ 
    $("#checkedAll").prop("checked", true); 
}   

SSR'nin cevabında ve mükemmel çalışıyor Teşekkür ederim


-1
if($('#chk_all').is(":checked"))
 {
    $('#'+id).attr('checked', true);
 }
else
 {
    $('#'+id).attr('checked', false);
 }  

Cevabı açıklarsan kullanışlı olur.
enkor

onay kutusunu işaretlerseniz, tüm onay kutuları kimlik olarak işaretlenir ve ardından onay kutusunun işaretini kaldırırsınız, ardından tüm onay kutusu işaretlenmez
Dsu Menaria


-1

html:

    <div class="col-md-3 general-sidebar" id="CategoryGrid">
                                                    <h5>Category &amp; Sub Category <span style="color: red;">* </span></h5>
                                                    <div class="checkbox">
                                                        <label>
                                                            <input onclick="checkUncheckAll(this)" type="checkbox">
                                                            All
                                                        </label>
                                                    </div>
                                                <div class="checkbox"><label><input class="cat" type="checkbox" value="Quality">Quality</label></div>
<div class="checkbox"><label><input class="subcat" type="checkbox" value="Planning process and execution">Planning process and execution</label></div>

javascript:

function checkUncheckAll(ele) {
    if (ele.checked) {
        $('.cat').prop('checked', ele.checked);
        $('.subcat').prop('checked', ele.checked);
    }
    else {
        $('.cat').prop('checked', ele.checked);
        $('.subcat').prop('checked', ele.checked);
    }
}

-1
            <pre>
            <SCRIPT language="javascript">
            $(function(){
                // add multiple select / deselect functionality
                $("#selectall").click(function () {
                      $('.case').attr('checked', this.checked);
                });

                // if all checkbox are selected, check the selectall checkbox
                // and viceversa
                $(".case").click(function(){

                    if($(".case").length == $(".case:checked").length) {
                        $("#selectall").attr("checked", "checked");
                    } else {
                        $("#selectall").removeAttr("checked");
                    }

                });
            });
            </SCRIPT>
            <HTML>
            <HEAD>
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
            <TITLE>Multiple Checkbox Select/Deselect - DEMO</TITLE>
            </HEAD>
            <BODY>
            <H2>Multiple Checkbox Select/Deselect - DEMO</H2>
            <table border="1">
              <tr>
                <th><input type="checkbox" id="selectall"/></th>
                <th>Cell phone</th>
                <th>Rating</th>
              </tr>
              <tr>
                <td align="center"><input type="checkbox" class="case" name="case" value="1"/></td>
                <td>BlackBerry Bold 9650</td>
                <td>2/5</td>
              </tr>
              <tr>
                <td align="center"><input type="checkbox" class="case" name="case" value="2"/></td>
                <td>Samsung Galaxy</td>
                <td>3.5/5</td>
              </tr>
              <tr>
                <td align="center"><input type="checkbox" class="case" name="case" value="3"/></td>
                <td>Droid X</td>
                <td>4.5/5</td>
              </tr>
              <tr>
                <td align="center"><input type="checkbox" class="case" name="case" value="4"/></td>
                <td>HTC Desire</td>
                <td>3/5</td>
              </tr>
              <tr>
                <td align="center"><input type="checkbox" class="case" name="case" value="5"/></td>
                <td>Apple iPhone 4</td>
                <td>5/5</td>
              </tr>
            </table>
            </BODY>
            </HTML>
            </pre>

kodda komut dosyası hatası. önce komut dosyasının yüklenmesi gerekiyor.
Satish Shetty

-1
function chek_al_indi(id)
{
    var k = id;
    var cnt_descriptiv_indictr = eval($('#cnt_descriptiv_indictr').val());
    var std_cnt = 10;

    if ($('#'+ k).is(":checked"))
    {
        for (var i = 1; i <= std_cnt; i++)  
        {
            $("#chk"+ k).attr('checked',true);  
            k = k + cnt_descriptiv_indictr;
        }
    }

    if ($('#'+ k).is(":not(:checked)"))
    {
        for (var i = 1; i <= std_cnt; i++)  
        {
            $("#chk"+ k).attr('checked',false);     
            k = k + cnt_descriptiv_indictr;
        }       
    }
}

Neden uzun işlev?
Jimmy Obonyo Abor

-2

Tetikleyici Tıklama

$("#checkAll").click(function(){
    $('input:checkbox').click();
});

VEYA

$("#checkAll").click(function(){
    $('input:checkbox').trigger('click');
});

VEYA

$("#checkAll").click(function(){
    $('input:checkbox').prop('checked', this.checked);
});
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.