jQueryを使用してすべてのチェックボックスをチェックする方法は?


118

私はjQueryの専門家ではありませんが、アプリケーション用の小さなスクリプトを作成しようとしました。すべてのチェックボックスをオンにしたいのですが、正しく機能しません。

最初に使用attrしてみましたが、その後試しましたpropが、何か間違っています。

私はこれを最初に試しました:

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

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

しかし、これはうまくいきませんでした。

次:これは上記のコードよりもうまくいきました

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

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

どちらの例も機能しません。

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




1

回答:


294

checkedプロパティを設定するには、.prop()を使用する必要があります

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

デモ:フィドル


1
素早い回答ありがとうございます。これはうまくいきますが、私のアプリでは偽のチェックが1つあります。ページctrl+rを更新してチェックボックスcheckAllをクリックすると、彼はすべてをチェックしません。その後、私は成功するために再度確認する必要があります。だから私checkAllはシングルクリックで機能しない2倍のクリックが必要ですか?私はそのコードをコピーして貼り付け、関数checkAll()を作成し、チェックボックスに設定しますonclick="return checkAll()"
Ivan

3
jQueryを使用する場合は、jQueryを使用します。jQueryとインラインJavaScriptを混在させることはお勧めできません。たとえば、これは悪いです:<elementtag id="someID" onclick="javascript code here":---代わりに、jQueryの使用$('#someID').click(function() { checkAll() });
cssyphus

4
あなたの投稿とこの回答の違いは何ですか、なぜ使用されたのnot(this).propですか?
shaijut 2016年

1
@ ArunPJohny、idは単一のページで一意である必要があります。クラスの例jsfiddle.net/52uny55w
Krishna Jonnalagadda

@ArunPJohny、ありがとうございました。私はあなたからjqueryについて多くのことを学びたいのですが、jqueryについて私に提案できますか
Krishna Jonnalagadda

44

単にのcheckedプロパティを使用し、チェックされたプロパティにはattrではなくprop()をcheckAll使用します

ライブデモ

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

チェックのようなプロパティにはattr()の代わりにprop()を使用します

jQuery 1.6以降、.attr()メソッドは、設定されていない属性に対して未定義を返します。フォーム要素のチェック状態、選択状態、無効状態などのDOMプロパティを取得して変更するには、.prop()メソッドを使用します

チェックボックスに同じIDがあり、一意である必要があります。依存するチェックボックスを含むクラスを使用して、不要なチェックボックスが含まれないようにします。なので $('input:checkbox')ページ上のすべてのチェックボックスを選択します。あなたのページが新しいチェックボックスで拡張されている場合、それらも選択/非選択されます。これは意図された動作ではない可能性があります。

ライブデモ

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

41

完全なソリューションはこちらです。

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

チェックされた3つのチェックボックスの単一のチェックボックスが選択および選択解除されます。

<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" />

これが私のためにしたように誰かに役立つことを願っています。

JSフィドルhttps://jsfiddle.net/52uny55w/


3
いずれかのチェックボックスをオフにすると、[すべてチェック]ボックスもオフになるため、このソリューションが気に入っています。同様に、対応するすべてのボックスを手動でチェックすると、[すべてチェック]ボックスもチェックされます。それはそこに素晴らしいUIフィードバックです!
HPWD

あなたは作ることができます$("#checkedAll").changeにそれを変更することで機能短いが:var val = this.checked; $(".checkSingle").each( function() { this.checked=val; });
Gellieアン

また、私はそれが名前を変更する方が良いと思うisAllCheckedに変数をisThereUncheckedunChecked、それは変数がために使用されたものに、より説明的になるようにします。
ジェリーアン

私はこの解決策を取った、これは私が感謝を求めているものだ
Ajay Kumar

10

ユーザーがすべてのチェックボックスを手動で選択すると、checkallが自動的にチェックされるか、ユーザーが選択されたすべてのチェックボックスからそれらの1つをオフにすると、checkallが自動的にオフになると思います。これが私のコードです。

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


ありがとうございました!すべてのチェックボックスをオンにした後で、それらの1つをオフにすると、すべてのチェックボックスがオフになるため、これを選択します。
Rizqi N. Assyaufi

7

なぜこれを試してみませんか( 'form#'の2行目で、htmlフォームの適切なセレクターを配置する必要があります):

$('.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は次のようになります。

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

お役に立てば幸いです。


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

デモ: FIDDLE



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

1

それらすべてを支配する1つのチェックボックス

軽量でチェックボックスを制御するプラグインをまだ探している人のために、UniformJSとiCheckのサポートがあり、制御されているチェックボックスの少なくとも1つがオフになっているとオフになります(すべての制御されているチェックボックスがオンになっているとオンになります)もちろん)jQuery checkAllプラグインを作成しました。

ドキュメンテーションページで例を確認してください


この質問の例で必要なのは次のとおりです。

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

それは明確で単純ではありませんか?


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

そしてjquery

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

1

.prop()複数の結果が返された場合でも、jQueryセレクターの結果を直接実行できます。そう:

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


0

通常、少なくとも1つのスレーブチェックボックスがオフになっている場合はマスターチェックボックスをオフにし、すべてのスレーブチェックボックスがオンになっている場合はチェックボックスをオンにする必要があります。

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

また、コントロール(Remove AllボタンやAdd Somethingボタンなど)を有効にする場合は、少なくとも1つのチェックボックスをオンにして、チェックボックスをオフにすると無効になります。

/**
 * 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コード

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

デモを見る

デモを表示するにはここをクリックしてください


0

.prop()を使用してプロパティの値を取得する

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

0

私はここにたくさんの回答が投稿されていることを知っていますが、これをコードの最適化のために投稿したいと思います。それをグローバルに使用できます。

最善を尽くした

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

これがお役に立てば幸いです。


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

0

checkallはallcheckボックスのIDで、cb-childはチェックオールクリックイベントに応じてオン/オフされる各チェックボックスの名前です

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

*すべてのチェックボックスを選択するためのJAVAスクリプト*

最善の解決策..試してみる

<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

以下のシンプルなコードを使用できます:

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

使用例:

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

上記の行を次のように変更してください

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

SSRの答えとその完璧な作業でありがとう


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

答えを説明すると便利でしょう。
enkor

チェックボックスを
オンに


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

コード内のスクリプトエラー。スクリプトを最初にロードする必要があります。
Satish Shetty 2017年

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

なぜ長い関数なのか?
Jimmy Obonyo Abor

-2

トリガークリック

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

または

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

または

$("#checkAll").click(function(){
    $('input:checkbox').prop('checked', this.checked);
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.