チェックボックスがjQueryでチェックされているかどうかを確認します


1189

チェックボックス配列のIDを使用して、チェックボックス配列のチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?

次のコードを使用していますが、IDに関係なく、チェックされているチェックボックスの数を常に返します。

function isCheckedById(id) {
    alert(id);
    var checked = $("input[@id=" + id + "]:checked").length;
    alert(checked);

    if (checked == 0) {
        return false;
    } else {
        return true;
    }
}

チェックボックスの配列?そのようなことを聞​​いたことがない。それはJQuery固有のものですか、それともプラグイン/ウィジェットですか?
Pekka

2
チェックボックス配列は次のようなものを意味します:<input type = "checkbox" name = "chk []" id = "chk []" value = "apple"> <input type = "checkbox" name = "chk []" id = "chk []" value = "banana"> <input type = "checkbox" name = "chk []" id = "chk []" value = "orange">など
Jake

2
チェックボックス配列の何が問題になっていますか?他にどのように「該当するものすべてをチェックする」入力を行いますか?
nickf 2010

5
idsが一意であることを確認してください!name繰り返すことができます(この場合、すべきです)が、を複製すると、多くの奇妙なことが起こっていることに気づくでしょうid!= D
Jeff Rupert、

「@」を削除しないと機能しません。また、最後の5行を1に縮小することもできます。
B.クレイシャノン

回答:


689

IDはドキュメント内で一意である必要があります。つまり、これを行うべきではありません。

<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />

代わりに、IDをドロップしてから、名前または包含要素でそれらを選択します。

<fieldset id="checkArray">
    <input type="checkbox" name="chk[]" value="Apples" />

    <input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>

そして今jQuery:

var atLeastOneIsChecked = $('#checkArray:checkbox:checked').length > 0;
//there should be no space between identifier and selector

// or, without the container:

var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;

私は入力名に二重引用符を付けずに作業しました:input [name = multiplecheck []]:checked、ありがとう!
Alejandro Quiroz

30
$('#checkArray :checkbox:checked').length > 0;よりシンプルなものが$('#checkArray').checked機能し、より多くのバージョンで利用できるときになぜ使用するのですか?
Don Cheadle、2015年

5
@Oddmanは機能しますが、jqueryオブジェクトでは機能しません。$(elem).checkedの代わりにelem.checkedを試してください。
Dan Williams

1
@DanWilliamsはい、ただしmmcraeの例ではそうではありません。
オッドマン

2番目は私のために働いた。ありがとう!! var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
David Silva-Barrera

2026
$('#' + id).is(":checked")

これは、チェックボックスがオンの場合に取得されます。

同じ名前のチェックボックスの配列の場合、次の方法でチェック済みのチェックボックスのリストを取得できます。

var $boxes = $('input[name=thename]:checked');

次に、それらをループしてチェックされている内容を確認するには、次のようにします。

$boxes.each(function(){
    // Do stuff here with this
});

チェックされている数を確認するには、次のようにします。

$boxes.length;

2
別の方法はです$('#'+id).attr('checked')。これは、$('#' + id).is(":checked")IMO と同等ですが、覚えやすいです。
Zubin、2011

85
@ズビン:に注意してください.attr('checked')。その動作はjQuery 1.6で変更されました。以前はfalseやを返していましたtrue。これでundefinedor が返されます"checked".is(':checked')この問題はありません。
ジョーイアダムス

1
@ジョン・ボーカー:ネクロのコメントは申し訳ありませんが、なぜ$('.ClassName').is(':checked')機能しないように見えるのに機能しないのです$('#' + id).is(":checked")か?IDとクラス名で検索するという事実は別として。
Mike_OBrien 2013

@Mike_OBrien問題は、そのクラス名のチェックボックスが複数あることです。is( ':checked')は実際には1つの要素でのみ機能します。
John Boker 2013

5
注:jQuery 1.8以降、size()は推奨されなくなりました
JM4

312
$('#checkbox').is(':checked'); 

上記のコードは、チェックボックスがオンの場合はtrueを返し、オフの場合はfalseを返します。


7
$(this).is( ':checked');を使用する場合に非常に便利です。ありがとう!
PinoyStackOverflower 2014年

この方法は、チェックボックスがチェックされているかどうかをチェックするのに役立ちます。チェックボックスを選択する方法がわかっている場合は、ありがとう
Omar Isaid

これは私にとってはうまくいきました、私は以前これを使いましたが、 var isChecked = $('#CheckboxID').attr('checked') ? true : false; 常に正しい値を返しませんでした。ほんとありがと!
1

121

以下のすべての方法が役立ちます。

$('#checkbox').is(":checked")

$('#checkbox').prop('checked')

$('#checkbox')[0].checked

$('#checkbox').get(0).checked

メソッドのjQuery onイベントリスナーを使用する代わりに、DOMelementまたはインラインの「this.checked」を回避することをお勧めします。


98

チェックボックスがチェックされているかどうかをチェックするjQueryコード:

if($('input[name="checkBoxName"]').is(':checked'))
{
  // checked
}else
{
 // unchecked
}

または:

if($('input[name="checkBoxName"]:checked'))
{
    // checked
}else{
  // unchecked
}

4
最初の解決策がありませ:ん...正しい解決策は次のとおりif(('input[name="checkBoxName"]').is(':checked'))です。
Aerendir 2016年

ドル記号($)がありませんif($('input[name="checkBoxName"]').is(':checked'))
ペニー劉

elsejQueryオブジェクトは、一致する要素が含まれていない場合でも「真実」であるため、2番目のオブジェクトはブロックを実行しません。.length最後に追加すると、話していることになります。
異端者の猿

69

checked属性について覚えておくべき最も重要な概念は、checkedプロパティに対応しないことです。この属性は実際にはdefaultCheckedプロパティに対応しており、チェックボックスの初期値を設定するためにのみ使用する必要があります。checked属性値はチェックボックスの状態によって変化しませんが、checkedプロパティは変化します。したがって、チェックボックスがチェックされているかどうかを判断するためのブラウザ互換の方法は、プロパティを使用することです

以下のすべての方法が可能です

elem.checked 

$(elem).prop("checked") 

$(elem).is(":checked") 

38

このコードを使用できます

if($("#checkboxId").is(':checked')){
     // Code in the case checkbox is checked.
} else {
     // Code in the case checkbox is NOT checked.
}

29

jQuery ドキュメントに従って、チェックボックスがチェックされているかどうかをチェックする方法は次のとおりです。例としてチェックボックスを考えてみましょう(すべての例で動作するjsfiddleを確認してください)

<input type="checkbox" name="mycheckbox" id="mycheckbox" />
<br><br>
<input type="button" id="test-with-checked" value="Test with checked" />
<input type="button" id="test-with-is" value="Test with is" />
<input type="button" id="test-with-prop" value="Test with prop" />

例1-チェックあり

$("#test-with-checked").on("click", function(){
    if(mycheckbox.checked) {
        alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

例2-jQueryがある場合、注-:checked

var check;
$("#test-with-is").on("click", function(){
    check = $("#mycheckbox").is(":checked");
    if(check) {
        alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

例3-jQueryプロップを使用

var check;
$("#test-with-prop").on("click", function(){
    check = $("#mycheckbox").prop("checked");
    if(check) {
         alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

動作中のjsfiddleを確認する


26

あなたはこれを試すことができます:

<script>
function checkAllCheckBox(value)
{
   if($('#select_all_').is(':checked')){
   $(".check_").attr ( "checked" ,"checked" );
    }
    else
    {
        $(".check_").removeAttr('checked');
    }

 }

</script>
<input type="checkbox" name="chkbox" id="select_all_" value="1" />


<input type="checkbox" name="chkbox" class="check_" value="Apples" />
<input type="checkbox" name="chkbox" class="check_" value="Bananas" />
<input type="checkbox" name="chkbox" class="check_" value="Apples" />
<input type="checkbox" name="chkbox" class="check_" value="Bananas" />

attrDOMのプロパティ値ではなく、HTMLの属性値のみを反映するため、これはもはや良い方法ではありません。参照のドキュメントattr「などのDOMプロパティ取得および変更するには、それは言う、checkedselected、またはdisabledを使用、フォーム要素の状態を.prop()。方法」、およびのドキュメントprop、それは「言う、.prop()この方法は、設定するために使用されなければならないdisabledchecked代わりに.attr()方法。」
異端者の猿

21

次の推奨コードのいずれかをjqueryで使用できます。

if ( elem.checked ) {};
if ( $( elem ).prop( "checked" ) ) {};
if ( $( elem ).is( ":checked" ) ) {};

20

私はOPがjqueryを必要としていることを知っていますが、私の場合は純粋なJSが答えでしたので、私のような誰かがここにいて、jqueryを持っていないか、使用したくない場合は、JSの答えです:

document.getElementById("myCheck").checked

ID myCheckの入力がチェックされている場合はtrueを返し、チェックされていない場合はfalseを返します。

そのような単純な。


11
$("#myCheck")[0].checkedjqueryで動作することを意味します!:D
Sancarn

10

あなたはそれを簡単に行うことができます。

フィドル

HTML

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

jQuery

$(document).ready(function () {
    var ckbox = $('#checkbox');

    $('input').on('click',function () {
        if (ckbox.is(':checked')) {
            alert('You have Checked it');
        } else {
            alert('You Un-Checked it');
        }
    });
});

またはさらに簡単です。

$("#checkbox").attr("checked") ? alert("Checked") : alert("Unchecked");

checkboxがチェックされている場合、trueそれ以外の場合は戻りますundefined


or even simpler;->$("#checkbox").checked
Don Cheadle、2015年

10

これも私が頻繁に使用するアイデアです:

var active = $('#modal-check-visible').prop("checked") ? 1 : 0 ;

チェックした場合は1を返します。それ以外の場合は0を返します。


7

チェックボックスをチェックおよび設定するための簡単なデモ。

jsfiddle

$('.attr-value-name').click(function() {
    if($(this).parent().find('input[type="checkbox"]').is(':checked'))
    {
        $(this).parent().find('input[type="checkbox"]').prop('checked', false);
    }
    else
    {
        $(this).parent().find('input[type="checkbox"]').prop('checked', true);
    }
});

7

私の例では、状況はダイアログボックスで、ダイアログを閉じる前にチェックボックスを確認しました。上記のどれも、jQueryでチェックボックスがチェックされているかどうかをチェックする方法は?また、チェックボックスがオンの場合のjQueryも機能していないようです。

最終的には

<input class="cb" id="rd" type="checkbox">
<input class="cb" id="fd" type="checkbox">

var fd=$('.cb#fd').is(':checked');
var rd= $('.cb#rd').is(':checked');

これは、クラス、次にIDを呼び出すように機能しました。IDだけでなく、このページにネストされたDOM要素が原因で問題が発生している可能性があります。回避策は上にありました。


6

IDのあるチェックボックスの場合

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

あなたは簡単にできる

$("#id_input_checkbox13").prop('checked')

trueまたはfalse上記の構文の戻り値として取得します。if句で通常のブール式として使用できます。


5

このような何かが役立ちます

togglecheckBoxs =  function( objCheckBox ) {

    var boolAllChecked = true;

    if( false == objCheckBox.checked ) {
        $('#checkAll').prop( 'checked',false );
    } else {
        $( 'input[id^="someIds_"]' ).each( function( chkboxIndex, chkbox ) {
            if( false == chkbox.checked ) {
                $('#checkAll').prop( 'checked',false );
                boolAllChecked = false;
            }
        });

        if( true == boolAllChecked ) {
            $('#checkAll').prop( 'checked',true );
        }
    }
}

5

実際、jsperf.comによると、DOM操作は最も速く、次に$()。prop()が続き、その後に$()。is()が続きます!!

構文は次のとおりです。

var checkbox = $('#'+id);
/* OR var checkbox = $("input[name=checkbox1]"); whichever is best */

/* The DOM way - The fastest */
if(checkbox[0].checked == true)
   alert('Checkbox is checked!!');

/* Using jQuery .prop() - The second fastest */
if(checkbox.prop('checked') == true)
   alert('Checkbox is checked!!');

/* Using jQuery .is() - The slowest in the lot */
if(checkbox.is(':checked') == true)
   alert('Checkbox is checked!!');

個人的には好き.prop()です。とは異なり.is()、値の設定にも使用できます。


4

チェックボックスをオンに切り替え

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

2

このコードを使用すると、異なるチェックボックスグループまたは複数のチェックボックスから、少なくとも1つのチェックボックスが選択されているかどうかを確認できます。これを使用すると、IDまたは動的IDを削除する必要はありません。このコードは同じIDで機能します。

参照リンク

<label class="control-label col-sm-4">Check Box 2</label>
    <input type="checkbox" name="checkbox2" id="checkbox21" value=ck1 /> ck1<br />
    <input type="checkbox" name="checkbox2" id="checkbox22" value=ck2 /> ck2<br />

<label class="control-label col-sm-4">Check Box 3</label>
    <input type="checkbox" name="checkbox3" id="checkbox31" value=ck3 /> ck3<br />
    <input type="checkbox" name="checkbox3" id="checkbox32" value=ck4 /> ck4<br />

<script>
function checkFormData() {
    if (!$('input[name=checkbox2]:checked').length > 0) {
        document.getElementById("errMessage").innerHTML = "Check Box 2 can not be null";
        return false;
    }
    if (!$('input[name=checkbox3]:checked').length > 0) {
        document.getElementById("errMessage").innerHTML = "Check Box 3 can not be null";
        return false;
    }
    alert("Success");
    return true;
}
</script>

基本情報:html要素IDは繰り返されません(例:id = "checkbox2"、id = "checkbox3")。これは良い習慣ではありません。1つのページでクラスを複数回使用できます。
Anand Somasekhar

1

2019年の半ばなので、jQueryはVueJS、Reactなどの事柄に後退することがあります。純粋なJavascript onloadリスナーオプションを次に示します。

<script>
  // Replace 'admincheckbox' both variable and ID with whatever suits.

  window.onload = function() {
    const admincheckbox = document.getElementById("admincheckbox");
    admincheckbox.addEventListener('click', function() {
      if(admincheckbox.checked){
        alert('Checked');
      } else {
        alert('Unchecked');
      }
    });
  }
</script>

0

あなたの質問は明確ではありません:入力に「チェックボックス配列ID」を与えtrue/false、出力にしたいのです-このようにして、(関数名が示唆するように)どのチェックボックスがチェックされたかわかりません。だから、以下isCheckedByIdに入力のチェックボックスidと出力のリターンであなたのボディの私の提案がありますtrue/false(それは非常に簡単ですがあなたのIDはキーワードであってはなりません)、

this[id].checked


-7

以下のコードを使用

<script>

$(document).ready(function () {
  $("[id$='chkSendMail']").attr("onchange", "ShowMailSection()");
}

function ShowMailSection() {
  if ($("[id$='chkSendMail'][type='checkbox']:checked").length >0){
      $("[id$='SecEmail']").removeClass("Hide");
  }
</script>

本当に?いかがですか$(function() { $("[id$='chkSendMail']").on("change", ShowMailSection); });
mplungjan '16

そして、それらはすべてチェックボックスなので、$("[id$='chkSendMail']:checked]")うまく機能するはずです
mplungjan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.