jQueryでチェックボックスがオンになっているかどうかを確認するにはどうすればよいですか?


4550

checkedチェックボックスのプロパティをチェックし、jQueryを使用して、チェックされたプロパティに基づいてアクションを実行する必要があります。

たとえば、年齢チェックボックスがオンになっている場合、年齢を入力するにはテキストボックスを表示する必要があります。それ以外の場合はテキストボックスを非表示にします。

ただし、次のコードはfalseデフォルトで戻ります。

if ($('#isAgeSelected').attr('checked'))
{
    $("#txtAge").show();
}
else
{
    $("#txtAge").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

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

<div id="txtAge" style="display:none">
Age is selected
</div>

checkedプロパティを正常にクエリするにはどうすればよいですか?


14
$( '#isAgeSelected')はコレクションを返し、次のものに置き換えます:$( '#isAgeSelected')[0] .checked
zamoldar

14
理由は何$('#isAgeSelected').checked
ですか

1
包括的(かつ正しい)回答については、stackoverflow.com
questions / 426258 /…を

12
jQueryセレクターは配列を返すため、以下を使用できます$('#isAgeSelected')[0].checked
FelipeLeãoJun

2
私にとっては、次の調整がうまくいきました:.attr( 'checked')を.is( ':checked')に置き換えます
Mark N Hopgood

回答:


3433

チェックされたプロパティを正常にクエリするにはどうすればよいですか?

checkedチェックボックスDOM要素のプロパティは、要素のchecked状態を示します。

既存のコードを考えると、これを行うことができます:

if(document.getElementById('isAgeSelected').checked) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

ただし、これを行うには、次の方法を使用したよりきれいな方法がありますtoggle

$('#isAgeSelected').click(function() {
    $("#txtAge").toggle(this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>


36
私も上記の条件を試しましたが、falseのみが返されます
Prasad

24
$( "#txtAge")。toggle(this.checked); $( "#txtAge")。toggle()とまったく同じです。そのため、何らかの理由で状態がチェックされ、次のdivが非表示になっている場合(ブラウザーの[戻る]ボタンをクリックした場合)、期待どおりに動作しません。
Maksim Vi。

23
@Chiramisu-答えを最後まで読んでいたとしたら、私の編集はis(':checked')ビジネスを使用していないことに気づいたでしょう。
karim79

8
設定する:$( "#chkmyElement")[0] .checked = true; 取得する場合:if($( "#chkmyElement")[0] .checked)
JJ_Coder4Hire

28
これは質問に対する答えではありません。this.checkedOPが要求したように、jQueryではありません。また、ユーザーが質問の一部ではないチェックボックスをクリックしたときにのみ機能します。繰り返しにHow to check whether a checkbox is checked in jQuery?なりますが、問題はいつでも、チェックボックスをクリックするかどうかに関係なく、jQuery内にあります。
Marc Compte 2017

1847

jQueryのis()関数を使用します。

if($("#isAgeSelected").is(':checked'))
    $("#txtAge").show();  // checked
else
    $("#txtAge").hide();  // unchecked

19
継続時間やイージングなどが必要ない場合は、使用できます $("#txtAge").toggle($("#isAgeSelected").is(':checked'))
naor

13
+1チェックされたプロパティを取得するにはさまざまな方法があります。一部はここにリストされています
user3199690 2014年

@NickGは実際にjQueryのない有する可視セレクタ
HVDD

2
@hvdd知っています-セレクターではなく、「プロパティ」と言いました。
NickG

@NickG ...意味がわからない。jQueryには.visible「プロパティ」(プロパティメソッドを意味する?)はありません。これは、HTML要素に可視プロパティがないためです。彼らは持っているdisplay スタイルプロパティを、それはもう少し複雑なオン/オフよりもです。
xDaizu 2016年

567

jQueryの使用> 1.6

<input type="checkbox" value="1" name="checkMeOut" id="checkMeOut" checked="checked" />

// traditional attr
$('#checkMeOut').attr('checked'); // "checked"
// new property method
$('#checkMeOut').prop('checked'); // true

新しいプロパティメソッドの使用:

if($('#checkMeOut').prop('checked')) {
    // something when checked
} else {
    // something else when not
}

27
これが答えではない理由を知りたいのですが... jqueryをまったく使用している場合、.propメソッドは小道具をチェックするために設計された方法です。.. ... .is(":checked")アプローチを実行する場合は問題ありませんが、jqueryを使用して実行するように設計された方法ではありません。正しい?
dsdsdsdsd

1
@dsdsdsdsdはおそらくさらに別の下位互換性ステップが必要なためです(今、同じ問題に直面しています)。
user98085 2014年

18
.is(":checked").prop("checked")jQueryで同じ結果を得る両方の有効な方法.isであり、すべてのバージョンで動作し、.prop
1.6以上

.attr('checked')jQuery 1.11.3で使用すると未定義となり、を使用する.prop('checked')とtrue / falseが返されます。古いブラウザが導入さ.prop()れたために必要な最新のjQueryバージョンをサポートできないときに、なぜこのように動作するように変更したのかわかりません.attr()。唯一の節約の恩恵は、古いブラウザー(つまりIE 8)がjQuery 1.9をサポートできないことです。うまくいけば、彼らは.attr('checked')そのバージョンではこれを行わなかった(make = undefined)!幸い、常にありthis.checkedます。
vapcguy

230

jQuery 1.6以降

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

jQuery 1.5以下

$('#isAgeSelected').attr('checked')

jQueryの任意のバージョン

// Assuming an event handler on a checkbox
if (this.checked)

すべてのクレジットは西安に行きます。


8
技術的にthis.checkedは、ストレートJavascriptを使用しています。しかし、私はそのjQueryバージョンの答えが大好きです!
vapcguy

170

私はこれを使用していますが、これはまったく問題なく動作しています。

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

注:チェックボックスをオンにすると、それ以外の場合は未定義のtrueが返されるため、「TRUE」値を確認することをお勧めします。


6
$( "#checkkBoxId")。attr( "checked")が "checked"または ""(空の文字列)を返すため、これは機能します。そして、空の文字列がfalsyで、非空の文字列がtruthyで、truthyについての参照/ falsy値はdocs.nodejitsu.com/articles/javascript-conventions/...
エイドリアンはして

7
jquery 2.1.xでは、デフォルトでチェックされている場合は常にチェックされた状態で返されます...この動作が意図的なものかどうかはわかりませんが、確実に機能しません(バグだと思います)... val()どちらも機能しません。「オン」のままです。prop()は適切に機能し、dom.checkedも機能します。
inf3rno 2014

1
そして、問題は.attr()!で古いブラウザをサポートする必要があるときに発生します。彼らが一人で十分に残っていれば...ここで別の答えを見つけthis.checkedたのは、それが基本的にはJavaScriptなので、jQueryを横断するソリューションにそのまま使用できるということです。
vapcguy

.attr( 'checked')は、デフォルトでチェックされているかどうかをテストします、はい。現在の状態ではなくhtml 属性をチェックしているためです。以前のバージョンはバグでした(かなり悪用されたものではあると思います)。
ジェイアーバイン

149

使用する:

<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned

$("#planned_checked").change(function() {
    if($(this).prop('checked')) {
        alert("Checked Box Selected");
    } else {
        alert("Checked Box deselect");
    }
});

    $("#planned_checked").change(function() {
        if($(this).prop('checked')) {
            alert("Checked Box Selected");
        } else {
            alert("Checked Box deselect");
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned


119

jQuery 1.6以降、の動作jQuery.attr()は変更されており、要素のチェック済み状態を取得するためにそれを使用しないことをお勧めします。代わりに、以下を使用する必要がありますjQuery.prop()

$("#txtAge").toggle(
    $("#isAgeSelected").prop("checked") // For checked attribute it returns true/false;
                                        // Return value changes with checkbox state
);

他に2つの可能性があります。

$("#txtAge").get(0).checked
$("#txtAge").is(":checked")

および$( "#txtAge")[0] .checked
Yevgeniy Afanasyev

101

これは私のために働きました:

$get("isAgeSelected ").checked == true

isAgeSelectedコントロールのIDはどこにありますか。

また、@ karim79の答えはうまくいきます。テストしたときに何を逃したのかわかりません。

注、これはjQueryではなくMicrosoft Ajaxを使用した答えです


4
すべての場合において、すべての通常のプログラミング言語では省略できます== true
RedPixel

@RedPixel null許容型を扱っている場合を除きます。:)(穏やかなスマイリー)
Kolob Canyon

88

jqueryの更新バージョンを使用している場合は.prop、問題を解決するための方法を見つける必要があります。

$('#isAgeSelected').prop('checked')trueチェックされているfalse場合とチェックされていない場合に戻ります。私はそれを確認し、私はこの問題を先に見つけました。$('#isAgeSelected').attr('checked')そして、状況にふさわしい答えではない、$('#isAgeSelected').is('checked')戻ってきてundefinedいます。以下のようにしてください。

if($('#isAgeSelected').prop('checked')) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

それが役に立てば幸い:)-ありがとう。


なんで$('#isAgeSelected').checked
Don Cheadle

1
.isを使用するには、コロンが必要です$( '#isAgeSelected')。is( ':checked')
Patrick

62

Clickプロパティはcheckedイベントハンドラ自体の実行中に変更される可能性があるため、checkboxプロパティのイベントハンドラの使用は信頼できません。

理想的にchangeは、チェックボックスの値が変更されるたびに(その方法に関係なく)起動されるように、コードをイベントハンドラーに配置することをお勧めします。

$('#isAgeSelected').bind('change', function () {

   if ($(this).is(':checked'))
     $("#txtAge").show();
   else
     $("#txtAge").hide();
});

3
jQuery 1.7以降、この.on()メソッドは、イベントハンドラをドキュメントに添付するための推奨メソッドです。
13

61

使用する:

<input type="checkbox" id="abc" value="UDB">UDB
<input type="checkbox" id="abc" value="Prasad">Prasad
$('input#abc').click(function(){
  if($(this).is(':checked'))
  {
    var checkedOne=$(this).val()
    alert(checkedOne);

    // Do some other action
  }
})

これは、チェックを外したときではなく、ボックスをチェックしたときにのみ必要なアクションを実行する必要がある場合に役立ちます。


53

私は、jQueryなしでまったく同じことを行う方法についての回答を投稿することにしました。私が反逆者だからです。

var ageCheckbox = document.getElementById('isAgeSelected');
var ageInput = document.getElementById('txtAge');

// Just because of IE <333
ageCheckbox.onchange = function() {
    // Check if the checkbox is checked, and show/hide the text field.
    ageInput.hidden = this.checked ? false : true;
};

まず、両方の要素をIDで取得します。次に、チェックボックスのonchangeイベントに、チェックボックスがチェックされたかどうかをチェックしhidden、年齢テキストフィールドのプロパティを適切に設定する関数を割り当てます。その例では、三項演算子を使用しています。

これをテストするためのフィドルです。

補遺

ブラウザー間の互換性が問題になる場合は、CSS displayプロパティをnoneおよびinlineに設定することをお勧めします。

elem.style.display = this.checked ? 'inline' : 'none';

低速ですが、ブラウザ間の互換性があります。


まあ、.hidden私はこのソリューションが好きですが、あまりクロスブラウザではありません:)
Florian Margaine

それは確かに使用する最良の方法styleです。ただし、.hiddenパフォーマンスははるかに優れているため、残念です。
Florian Margaine 2012年

条件付き演算子内の割り当て?はい、そうです。しかし、私が良いスタイルと呼ぶものではありません。
ジュール、

単純化できます:ageInput.hidden =!this.checked; (人々がブールリテラルを不必要に使用するのは嫌です...同じ単純なステートメントで「true」と「false」の両方を使用している場合、おそらくどちらも使用する必要はないでしょう)
JoelFan

52

私はあなたがこれを行うことができると信じています:

if ($('#isAgeSelected :checked').size() > 0)
{
    $("#txtAge").show(); 
} else { 
    $("#txtAge").hide();
}

alert($( 'input [name = isAgeSelected]')。attr( 'checked')); 上記のコードは、チェックに基づいてtrue / falseを示しています。以前の試行での問題
Prasad

Prasad、名前またはIDでチェックボックスを参照していますか?私は今混乱しています...
karim79

IDをつけられませんか?物事ははるかに簡単になります。あなたの例では、IDでアドレスを指定しています
キセノン

.size()メソッドは、jQuery 1.8以降非推奨になりました。代わりに.length(()なしの;-)プロパティを使用してください!そして、おそらくあなたは「#isAgeSelected:checked」をくっつける必要があります。
フランソワブルトン

47

私はまったく同じ問題に遭遇しました。ASP.NETチェックボックスがあります

<asp:CheckBox ID="chkBox1" CssClass='cssChkBox1' runat="server" />

jQueryコードでは、次のセレクターを使用して、チェックボックスがチェックされているかどうかをチェックしました。これは魅力のように機能するようです。

if ($("'.cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

CssClassの代わりにIDを使用することもできると思います。

if ($("'#cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

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


46

チェックボックスがチェックされているかどうかをチェックするには、多くの方法があります。

jQueryを使用して確認する方法

if (elem.checked)
if ($(elem).prop("checked"))
if ($(elem).is(":checked"))
if ($(elem).attr('checked'))

例またはドキュメントも確認してください。


46

このコードはあなたを助けます

$('#isAgeSelected').click(function(){
   console.log(this.checked);
   if(this.checked == true) {
        $("#txtAge").show();
    } else {
       $("#txtAge").hide();
   }
});

42

これは私にとってはうまくいきます:

/* isAgeSelected being id for checkbox */

$("#isAgeSelected").click(function(){
  $(this).is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();
});

41

これは、同じことを行ういくつかの異なる方法です。

$(document).ready(function (){

    $('#isAgeSelected').click(function() {
        // $("#txtAge").toggle(this.checked);

        // Using a pure CSS selector
        if ($(this.checked)) {
            alert('on check 1');
        };

        // Using jQuery's is() method
        if ($(this).is(':checked')) {
            alert('on checked 2');
        };

        //  // Using jQuery's filter() method
        if ($(this).filter(':checked')) {
            alert('on checked 3');
        };
    });
});
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>


35

これを使って:

if ($('input[name="salary_in.Basic"]:checked').length > 0)

チェックボックスがオンになっている場合、長さはゼロより大きいです。


33

これを行う私の方法は:

if ( $("#checkbox:checked").length ) {       
    alert("checkbox is checked");
} else {
    alert("checkbox is not checked");
}

31
$(selector).attr('checked') !== undefined

これはtrue、入力がチェックされているfalse場合とチェックされていない場合に戻ります。


4
これが特定のシナリオで機能する理由を理解.attr('checked')していますが、常に正しい状態を返すとは限らないのと同じ問題があります。あたりとしてサルマンAさんの回答(そしておそらく他の人)、それはを利用するために、より安全なオプションです.prop('checked')代わりに。また、undefinedとして宣言することもできvar undefined = 'checked';ます。
WynandB 2013

.prop('checked')今はより良い答えのようです。書かれた当時はそれほど信頼できませんでした。私は理解していませんし、未定義を再宣言するのは良い考えだとは思いません。
fe_lix_ 2013

typeof (x) !== "undefined"
余談

その場合、!==の方がより正確で読みやすいと思います。typeof(x)は、過去に定義された、または定義されていない変数をテストする場合にのみ使用します。
fe_lix_ 2013

30
$(document).ready(function() {    
    $('#agecheckbox').click(function() {
        if($(this).is(":checked"))
        {
            $('#agetextbox').show();
        } else {
            $('#agetextbox').hide();
        }
    });
});

30

以下を使用できます。

  if(document.getElementById('isAgeSelected').checked)
    $("#txtAge").show();  
  else
    $("#txtAge").hide();

if($("#isAgeSelected").is(':checked'))
  $("#txtAge").show();  
else
  $("#txtAge").hide();

どちらも機能するはずです。


27

1)HTMLマークアップが次の場合:

<input type="checkbox"  />

使用される属性:

$(element).attr("checked"); // Will give you undefined as initial value of checkbox is not set

プロップを使用する場合:

$(element).prop("checked"); // Will give you false whether or not initial value is set

2)HTMLマークアップが次の場合:

 <input type="checkbox"  checked="checked" />// May be like this also  checked="true"

使用される属性:

$(element).attr("checked") // Will return checked whether it is checked="true"

使用される支柱:

$(element).prop("checked") // Will return true whether checked="checked"

これは実際の問題です。私の回避策-入力に変更イベントを追加します:<input type = "checkbox" onchange = "ChangeChkBox()" />次に、そのイベントを使用してブールJavaScript変数を変更し、チェックボックスを直接クエリする代わりにJavaScript変数を使用します。
Graham Laight

24

この例はボタン用です。

以下を試してください:

<input type="button" class="check" id="checkall" value="Check All" />  &nbsp; <input type="button" id="remove" value="Delete" /> <br/>

<input type="checkbox" class="cb-element"  value="1" /> Checkbox  1 <br/>
<input type="checkbox" class="cb-element"  value="2" /> Checkbox  2 <br/>
<input type="checkbox" class="cb-element"  value="3" /> Checkbox  3 <br/>


$('#remove').attr('disabled', 'disabled'); 

$(document).ready(function() {  

    $('.cb-element').click(function() {

        if($(this).prop('checked'))
        {
            $('#remove').attr('disabled', false);
        }
        else
        {
            $('#remove').attr('disabled', true);
        }
    });   

    $('.check:button').click(function()
{
    var checked = !$(this).data('checked');
    $('input:checkbox').prop('checked', checked);
    $(this).data('checked', checked);

    if(checked == true)
    {
        $(this).val('Uncheck All');
         $('#remove').attr('disabled', false);
    }

    else if(checked == false)
    {
        $(this).val('Check All');
        $('#remove').attr('disabled', true);
    }
});
});

24

一番上の答えは私にはそれをしませんでした。しかし、これはしました:

<script type="text/javascript">
    $(document).ready(function(){

        $("#li_13").click(function(){
            if($("#agree").attr('checked')){
                $("#saveForm").fadeIn();
            }
            else
            {
                $("#saveForm").fadeOut();
            }
        });
    });
</script>

基本的に、要素#li_13がクリックされると、.attr('checked')関数を使用して、要素の同意(チェックボックス)がチェックされているかどうかがチェックされます。フェードインの場合は#saveForm要素、フェードアウトでない場合はsaveForm要素。


22

私はこれを使用しています:

 <input type="checkbox" id="isAgeSelected" value="1" /> <br/>
 <input type="textbox" id="txtAge" />

 $("#isAgeSelected").is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();

22

あなたの問題(aがのtextboxときにaを表示する)のJavaScriptソリューションを提案しましたcheckboxchecked、この問題はcssだけで解決できます。このアプローチでは、JavaScriptを無効にしているユーザーがフォームを使用できます。

次のHTMLがあると仮定します。

<label for="show_textbox">Show Textbox</label>
<input id="show_textbox" type="checkbox" />
<input type="text" />

次のCSSを使用して、目的の機能を実現できます。

 #show_textbox:not(:checked) + input[type=text] {display:none;}

他のシナリオでは、適切なCSSセレクターを考えることができます。

これがこのアプローチを示すフィドルです。


21

トグル:0/1またはそれ以外

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

    $('#nolunch').change(function () {
    if ($(this).is(':checked')) {
        $('#checklunch').val('1');
    };
    if ($(this).is(':checked') == false) {
        $('#checklunch').val('0');
    };
});

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.