jQueryでチェックボックスに「チェック済み」を設定する


4130

私はjQuerycheckboxを使用してチェックするためにこのようなことをしたいと思います:

$(".myCheckBox").checked(true);

または

$(".myCheckBox").selected(true);

そのようなものは存在しますか?


より具体的な(そして非常に便利な)質問、「チェックボックスセットBY VALUEの項目をチェックするにはどうすればよいですか?」、ここでも議論できると思い、回答を以下に投稿しました。
Peter Krauss

このここではjQueryを使用して行うために他の方法をチェックstackoverflow.com/a/22019103/1868660
Subodh Ghulaxe

onchangeイベントをトリガーする必要がある場合、それは$("#mycheckbox").click();
HumanInDisguise、2015年

「何かをチェックする」はそれをテストすることを示唆しているので、「チェックボックスをオンにする」はより明確でより良いタイトルだと思います。
Alireza

prop(); 関数は完璧な答えです。関数の定義を参照してください-api.jquery.com/prop
yogihosting

回答:


5969

最新のjQuery

使用.prop()

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

DOM API

要素を1つだけ使用している場合は、常に基になる要素にアクセスし、HTMLInputElementその.checkedプロパティを変更することができます。

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

これの代わりに.prop()および.attr()メソッドを使用する利点は、一致するすべての要素で動作することです。

jQuery 1.5.x以下

.prop()あなたが使用する必要があるので、この方法では、使用できません.attr()

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

これは、バージョン1.6より前のjQueryの単体テストで使用されるアプローチであり$('.myCheckbox').removeAttr('checked');、ボックスが最初にチェックさ.reset()れていた場合、それを含むフォームでの呼び出しの動作を変更するため、後者が使用するよりも望ましいことに注意してください。歓迎されない行動の変化。

詳細については、checked1.5.xから1.6への移行における属性/プロパティの処理の変更に関する不完全な説明が、バージョン1.6のリリースノートドキュメントの属性とプロパティのセクションにあり.prop()ます


26
チェックされた属性を@Xianが削除すると、フォームをリセットできなくなります
mcgrailm

6
ちなみに、jQuery 1.6.1は前述の問題を修正しているので、技術的にはすべて$(...)。prop(...)の使用に戻ることができます
cwharris

19
「要素を1つだけ使用している場合は、常に最速で使用できますDOMElement.checked = true」。それだけで一つの要素だから...しかし、それは、無視できるだろう
タイラークロンプトン

46
タイラーが言うように、それはパフォーマンスの無視できる改善です。私にとって、共通APIを使用したコーディングは、ネイティブAPIとjQuery APIを混在させるよりも読みやすくなります。私はjQueryを使い続けます。
チャーリーキリアン

18
@TylerCrompton-もちろん、それは完全にパフォーマンスに関するものではありませんが、行うこと$(element).prop('checked')はタイピングの完全な無駄です。 element.checked存在し、あなたが既に持っている場合に使用されなければならないelement
gnarf

704

使用する:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

そして、チェックボックスがチェックされているかどうかをチェックしたい場合:

$('.myCheckbox').is(':checked');

4
また、$(selector).checked to checkがチェックされています
eomeroff '

6
私はこの正確なコードを試してみましたが、すべてを選択する/すべてを選択しないチェックボックスですべてのチェックとチェック解除、およびそれらの状態をチェックする必要がある場合は機能しませんでした。代わりに、@ Christopher Harrisの答えを試しましたが、それでうまくいきました。
JD Smith

単に「#mycheckbox」の代わりに「フォーム#mycheckbox」を使用する理由 IDはドキュメント全体ですでに一意であり、直接選択する方が速くて簡単です。
YuriAlbuquerque 2013年

@YuriAlbuquerqueそれは例でした。好きなセレクタを使用できます。
bchhun 2013年

5
$(selector).checkedが機能しません。jQueryには 'checked'メソッドはありません。
ブレンダンバード

318

これは、クロスプラットフォーム標準であり、フォームの再投稿許可するため、jQueryでチェックボックスをオンまたはオフにする正しい方法です。

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

これを行うことにより、チェックボックスのチェックとチェック解除にJavaScript標準を使用しているため、checkbox要素の "checked"プロパティを適切に実装するブラウザーは、このコードを完全に実行します。これすべての主要なブラウザーであるはずですが、Internet Explorer 9以前ではテストできません。

問題(jQuery 1.6):

ユーザーがチェックボックスをクリックすると、そのチェックボックスは「checked」属性の変更に応答しなくなります。

これは、誰かがチェックボックスをクリックした後、ジョブが失敗するチェックボックス属性の例です(これはChromeで発生します)。

フィドル

ソリューション:

JavaScriptのの上でプロパティを「確認」を使用してDOM要素を、我々は代わりに私たちが何をやってにDOMを操作しようとしているの、直接の問題を解決することができますしたい、それが何を。

フィドル

このプラグインは、jQueryによって選択されたすべての要素のcheckedプロパティを変更し、すべての状況でチェックボックスを正常にチェックおよびチェック解除します。したがって、これは根本的な解決策のように思えるかもしれませんが、サイトのユーザーエクスペリエンスを向上させ、ユーザーの不満を防ぐのに役立ちます。

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

または、プラグインを使用したくない場合は、次のコードスニペットを使用できます。

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});

5
あなたの最初のJSFiddleの例では、使用する必要があるremoveAttr('checked')のではなくattr('checked', false)
ダニエルXムーア

4
@DanielXMoore、あなたは問題を回避しています。この例では、ユーザーがチェックボックスをクリックすると、checked属性の変更方法に関係なく、ブラウザが属性の変更に応答しなくなることを示しました。
cwharris 2012年

3
@ChristopherHarrisわかりました、そうです、見逃しました。jQuery 1.6以降、.propメソッドを使用すべきではありませんか?$('.myCheckBox').prop('checked', true)このようにして、一致する要素のセット全体に自動的に適用されます(ただし、設定する場合に限り、取得はまだ最初の
Daniel X Moore

はい。prop要素に属性を設定するには、間違いなく適切な方法です。
cwharris

@ChristopherHarris、私はプラグインに必要なものを追加して、パラメーターの柔軟性を高めました。これにより、型変換を行わなくてもインライン処理が容易になりました。「真」が何であるかについての「アイデア」を持つ異種データベースからのESP。フィドル:jsfiddle.net/Cyber​​jetx/vcp96
Joe Johnston、

147

できるよ

$('.myCheckbox').attr('checked',true) //Standards compliant

または

$("form #mycheckbox").attr('checked', true)

起動するチェックボックスのonclickイベントにカスタムコードがある場合は、代わりに次のコードを使用します。

$("#mycheckbox").click();

属性を完全に削除することでチェックを外すことができます:

$('.myCheckbox').removeAttr('checked')

次のようにすべてのチェックボックスをオンにすることができます:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});

$( "#myTable input:checkbox")。each(...);
Chris Brandsma、

あなたも行くことができます$(".myCheckbox").click()
RobertPitt

3
@Michahがchecked属性を削除すると、フォームをリセットできなくなります
mcgrailm

12
.attr代わりにを使用しているため、この回答は古くなっています.prop
Blazemonger 2014年

$("#mycheckbox").click();私はあまりにも変更イベントを聞いていたとして、私のために働いたと.attr.prop火災変更イベントませんでした。
Damodar Bashyal

80

新しいメソッドで$ .fnオブジェクトを拡張することもできます。

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

その後、あなたはただ行うことができます:

$(":checkbox").check();
$(":checkbox").uncheck();

または、これらの名前を使用する他のライブラリを使用する場合に備えて、mycheck()やmyuncheck()などの一意の名前を付けたい場合があります。


5
@ livfree75 checked属性を削除すると、フォームをリセットできなくなります
mcgrailm

5
.attr代わりにを使用しているため、この回答は古くなっています.prop
Blazemonger、2014年

64
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

最後の1つはチェックボックスのクリックイベントを発生させ、他のイベントは発生させません。したがって、起動するチェックボックスのonclickイベントにカスタムコードがある場合は、最後のコードを使用します。


4
上の1つは失敗します... checkedはjqueryオブジェクトメンバーではありません
redsquare

5
.attr代わりにを使用しているため、この回答は古くなっています.prop
Blazemonger、2014年

IMO clickイベントはFirefoxとEdgeでは信頼できません。
Vahid Amiri

62

チェックボックスをチェックするには、使用する必要があります

 $('.myCheckbox').attr('checked',true);

または

 $('.myCheckbox').attr('checked','checked');

チェックボックスをオフにするには、常にfalseに設定する必要があります。

 $('.myCheckbox').attr('checked',false);

もしあなたがそうするなら

  $('.myCheckbox').removeAttr('checked')

これにより属性がすべて削除されるため、フォームをリセットできません。

悪いデモjQuery 1.6。これは壊れていると思います。1.6については、新しい投稿を作成します。

新しい動作デモjQuery 1.5.2はChromeで動作します。

どちらのデモでも

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});

1
これは不正確です。'checked'属性を ''に設定すると、少なくともクロムのチェックボックスがオフになりません
cwharris

@xixoniaフィドルを投稿する前にテストしましたが、左側のメニューをjqueryを含めるように変更しなかったため、機能しません
mcgrailm

1
mcgralim-1.6ではさらに簡単になりました... $(".mycheckbox").prop("checked", true/false)
gnarf

2
@MarkAmeryあなたは私の投稿が投稿時に何も追加しなかったと述べましたが、それは正確ではありません。受け入れられた回答の履歴を見ると、要素を削除するよう提案されていることがわかります。これはフォームをリセットすることを不可能にします、それが私が最初に投稿した理由です。
mcgrailm 2014

1
@mcgrailm私は先に進み、あなたの発言に照らして受け入れられた回答を変更しました。その上に目を向けて、現在の状態で見栄えがよいことを確認したい場合は、ぜひお願いします。少なくとも一部は非常に見当違いであった鋭い批判を提供したことに対して、再び謝罪します。
Mark Amery 14

51

これは、指定されたサブストリング「ckbItem」を含む値を持つ指定された属性を持つ要素を選択します。

$('input[name *= ckbItem]').prop('checked', true);

これは、name属性にckbItemを含むすべての要素を選択します。


46

質問が...

チェックボックスセットBY VALUEをチェックするにはどうすればよいですか?

典型的なチェックボックスセットでは、すべての入力タグが同じ名前を持ち、属性によって異なりますvalue。セットの各入力にIDはありません。

Xianの回答は、次のコード行を使用して、より具体的なセレクターで拡張できます。

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);

45

解決策がありません。私は常に使用します:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}

3
これは質問の答えにはなりません(質問は、チェックボックスがチェックされているかどうかを決定するのではなく、チェックボックスがチェックされているかどうかを設定することです)。これは、チェックボックスがチェックされているかどうかを判断するかなり醜い方法でもあります(1つには、0要素で呼び出されたときに.val()常に返さundefinedれる非自明の事実を利用して、jQueryオブジェクトが空であることを検出することができます.length代わりに単にチェックしてください)- より読みやすいアプローチについては、stackoverflow.com / questions / 901712 /…を参照してください。
マークアメリー2014

42

jQuery 1.6以降を使用してチェックボックスをチェックするには、次のようにします。

checkbox.prop('checked', true);

チェックを外すには、以下を使用します。

checkbox.prop('checked', false);

以下は、jQueryを使用してチェックボックスを切り替えるために使用するものです。

checkbox.prop('checked', !checkbox.prop('checked'));

jQuery 1.5以下を使用している場合:

checkbox.attr('checked', true);

チェックを外すには、以下を使用します。

checkbox.attr('checked', false);

37

ここにjQueryなしでそれを行う方法があります

function addOrAttachListener(el, type, listener, useCapture) {
  if (el.addEventListener) {
    el.addEventListener(type, listener, useCapture);
  } else if (el.attachEvent) {
    el.attachEvent("on" + type, listener);
  }
};

addOrAttachListener(window, "load", function() {
  var cbElem = document.getElementById("cb");
  var rcbElem = document.getElementById("rcb");
  addOrAttachListener(cbElem, "click", function() {
    rcbElem.checked = cbElem.checked;
  }, false);
}, false);
<label>Click Me!
  <input id="cb" type="checkbox" />
</label>
<label>Reflection:
  <input id="rcb" type="checkbox" />
</label>


31

以下は、ボタン付きのチェックありとチェックなしのコードです。

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
        });
        set=unset;
    });
});

更新:attrを置き換える新しいJquery 1.6+ propメソッドを使用した同じコードブロックを次に示します。

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
        });
        set=unset;
    });
});

4
.attr代わりにを使用しているため、この回答は古くなっています.prop
Blazemonger、2014年

30

これを試して:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking

29

elementObjectjQueryを使用して、属性をチェックできます。

$(objectElement).attr('checked');

エラーなしですべてのjQueryバージョンにこれを使用できます。

更新:Jquery 1.6+には、attrに代わる新しいpropメソッドがあります。例:

$(objectElement).prop('checked');

2
.attr代わりにを使用しているため、この回答は古くなっています.prop
Blazemonger、2014年

25

アプリケーション開発を行うPhoneGapを使用していて、ボタンにすぐに表示したい値がある場合は、必ずこれを実行してください

$('span.ui-[controlname]',$('[id]')).text("the value");

スパンがないと、何をしてもインターフェイスが更新されないことがわかりました。


25

複数のチェックボックスをオンにする方法のコードとデモを次に示します...

http://jsfiddle.net/tamilmani/z8TTt/

$("#check").on("click", function () {

    var chk = document.getElementById('check').checked;
    var arr = document.getElementsByTagName("input");

    if (chk) {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = true;
        }
    } else {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = false;
        }
    }
});

-1; のようにjQueryセレクター$("#check")を生のDOM API呼び出しと混在させることはdocument.getElementsByTagName("input")、特にforここでのループを回避することを考えると、私には無味そう.prop()です。とにかく、これは新しいことを何も加えないもう1つの遅い答えです。
Mark Amery 2014

20

別の可能な解決策:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }

19

@ livefree75が言ったように:

jQuery 1.5.x以下

新しいメソッドで$ .fnオブジェクトを拡張することもできます。

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

しかし、jQueryの新しいバージョンでは、次のようなものを使用する必要があります。

jQuery 1.6以降

    (function($)  {
       $.fn.extend({
          check : function()  {
             return this.filter(":radio, :checkbox").prop("checked", true);
          },
          uncheck : function()  {
             return this.filter(":radio, :checkbox").prop("checked",false);
          }
       });
    }(jQuery));

その後、あなたはただ行うことができます:

    $(":checkbox").check();
    $(":checkbox").uncheck();

18

モバイルを使用していて、インターフェースを更新してチェックボックスをオフにしたい場合は、以下を使用します。

$("#checkbox1").prop('checked', false).checkboxradio("refresh");

18

jQueryドキュメントで次のように、Internet Explorer 9より前のInternet Explorerでのメモリリークに注意してください。

バージョン9より前のInternet Explorerでは、.prop()を使用してDOM要素のプロパティを単純なプリミティブ値(数値、文字列、またはブール値)以外に設定すると、プロパティが削除されないと(.removeProp(を使用して)メモリリークが発生する可能性があります。 ))DOM要素がドキュメントから削除される前。メモリリークなしで安全にDOMオブジェクトに値を設定するには、.data()を使用します。


2
すべての(正しい)回答がを使用するため、これは無関係.prop('checked',true)です。
Blazemonger 2014年

私はあなたのコメントを理解していると確信していません。これはjQueryドキュメントにまだ存在します。IE <9でメモリリークがないことを意味していますか?
2014年

2
我々はので、この場合にはメモリリークは、ありませんされている、単純なプリミティブ値(ブール値)に設定します。
Blazemonger 2014年

18

jQuery 1.6以降の場合

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

jQuery 1.5.x以下の場合

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

チェックする、

$('.myCheckbox').removeAttr('checked');

17

チェックおよびチェック解除するには

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

3
-1; これにより、すでに肥大化したスレッドにはまったく価値がありません。ここのコードは、受け入れられた回答とまったく同じです。
Mark Amery 2014

16
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});

4
-1はコードのみの回答であり、質問に直接回答するのではなく、他の回答がまだカバーしていないことは何も追加しません。
Mark Amery 2014

15

これはおそらく最も短く簡単な解決策です。

$(".myCheckBox")[0].checked = true;

または

$(".myCheckBox")[0].checked = false;

さらに短くなります:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

ここにjsFiddleがあります。


14

プレーンJavaScriptは非常にシンプルで、オーバーヘッドがはるかに少ないです。

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

ここの例


@MarkAmery受け入れられた回答は、jQueryなしでそれを行う方法をカバーしていません。私の答えは、受け入れられた答えに補足的な利点を追加します。
Alex W 14

13

私はそれを使ってそれを機能させることができませんでした:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

trueとfalseの両方がチェックボックスをオンにします。私のために働いたのは:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking

16
それはすべきではないtruefalseしていない'true''false'
tpower

9
'false'結果としてブール値に変換されたため、「機能しませんでした」true-空の文字列は、false「機能した」と評価されます。私の意味の例については、このフィドルを参照してください。
Shadow WizardはEar For Youである

@ chris97ong編集をロールバックしました。誰かが「機能しないので以下のコードを使用しないでください」と言ったとき、特にコードが機能しない理由のコメントで説明が壊れている場合は、コメントを残してコードを修正すると有害です。機能していません。とは言っても、この回答は依然としてやや混乱しており、tpowerとShadowWizardによって与えられた理由のために反対票を投じる価値があります。
Mark Amery 14

1
ブール値にはtrueとfalseの値を使用し、「true」または「false」(文字列)は使用しないでください。
Jone Polvora、2015

13

次のようなチェックボックスをオンにすると、

$('.className').attr('checked', 'checked')

それは十分ではないかもしれません。以下の関数も呼び出す必要があります。

$('.className').prop('checked', 'true')

特に、チェックボックスのチェック属性を削除した場合。


11

これが完全な答えです jQueryを使用し

私はそれをテストし、それは100%機能します:D

    // when the button (select_unit_button) is clicked it returns all the checed checkboxes values 
    $("#select_unit_button").on("click", function(e){

             var arr = [];

             $(':checkbox:checked').each(function(i){
                 arr[i] = $(this).val(); // u can get id or anything else
             });

              //console.log(arr); // u can test it using this in google chrome
    });

10

jQueryでは、

if($("#checkboxId").is(':checked')){
    alert("Checked");
}

または

if($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

JavaScriptでは、

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}

7
これは質問の答えにはなりません。
Samuel Liew

2
.attr代わりにを使用しているため、この回答は古くなっています.prop
Blazemonger 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.