jQueryでチェックボックスの値を取得する


534

jQueryでチェックボックスの値を取得するにはどうすればよいですか?

回答:


1062

Value属性の値を取得するには、次のようにします。

$("input[type='checkbox']").val();

または、classまたはidを設定している場合は、次のことができます。

$('#check_id').val();
$('.check_class').val();

ただし、これはチェックされるかどうかにかかわらず同じ値を返します。これは、送信されたフォームの動作とは異なるため、混乱を招く可能性があります。

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

if ($('#check_id').is(":checked"))
{
  // it is checked
}

3
ページに複数のチェックボックスがある場合、最初の例は何をしますか?ところで、それはもっと短い方法で書くことができます$("input:checkbox")。また、クラスセレクタにタイプミスがあるようです...
Jawa

1
@ジャワ:最初のものは構文を示す一例であり、そのタイプミスに感謝します。
Sarfraz、2010年

136
私がしようとすると$($0).val()Chromeで、そしてチェックを外し、チェックボックス、答えはそれがチェックされていないにもかかわらず、「上」です。しかし$($0).is(":checked")、正しい値を返します。
エイドリアン

2
@Jawa Per api.jquery.com/checkbox-selector [type="checkbox"]は、最新のブラウザーでよりも優れたパフォーマンスを発揮します:checkbox
TrueWill、2015年

3
交換する$('#check_id').val();ために$('#check_id').is(":checked");値がtrueまたはfalseを返します。
Matheus Miranda

228

これらの2つの方法は機能しています。

  • $('#checkbox').prop('checked')
  • $('#checkbox').is(':checked')(ありがとう@mgsloan

$('#test').click(function() {
    alert("Checkbox state (method 1) = " + $('#test').prop('checked'));
    alert("Checkbox state (method 2) = " + $('#test').is(':checked'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Check me: <input id="test" type="checkbox" />


9
.is( 'checked')は.is( ':checked')である必要があるため機能しませんでした
mgsloan

お返事ありがとうございます。これは、jQueryのprop()関数を使用した最先端の回答です
Thomas.Benz 2018年

58

この小さなソリューションを試してください:

$("#some_id").attr("checked") ? 1 : 0;

または

$("#some_id").attr("checked") || 0;

または!!($( "#some_id")。attr( "checked"))
COOLGAMETUBE

34

チェックボックスの値を取得する唯一の正しい方法は次のとおりです

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

jQueryのWebサイトの公式ドキュメントで説明されています。残りのメソッドはチェックボックスのプロパティとは何の関係もありません。属性をチェックしています。つまり、ロードされたときのチェックボックスの初期状態をテストしています。要するに:

  • 要素があり、それがチェックボックスであることがわかっている場合は、そのプロパティを読み取るだけで、jQueryが不要になる(つまりelem.checked)か$(elem).prop("checked")、jQueryに依存したい場合に使用できます。
  • 要素が最初にロードされたときの値(つまりデフォルト値)を知る(または比較する)必要がある場合、正しい方法は$(elem).is(":checked")です。

答えは誤解を招く可能性があります。以下を確認してください:

http://api.jquery.com/prop/


.is(":checked")そして.prop(":checked")wは/ jQueryの1.10.0私のために同じように働いている
ジョシュ・

23

明確にするために:

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

「true」または「false」を返します


14
$('#checkbox_id').val();
$('#checkbox_id').is(":checked");
$('#checkbox_id:checked').val();

動作しません。あなたがチェックする前に列が必要な場合があります「:チェックする」
usefulBee

9
.val()は機能しません。チェックされているかどうかに関係なく「on」を返します。
Michael Cole

11
jQuery(".checkboxClass").click(function(){
        var selectedCountry = new Array();
        var n = jQuery(".checkboxClass:checked").length;
        if (n > 0){
            jQuery(".checkboxClass:checked").each(function(){
                selectedCountry.push($(this).val());
            });
        }
        alert(selectedCountry);
    });

10

シンプルだが効果的であり、チェックボックスが見つかることを知っていると想定します。

$("#some_id")[0].checked;

与えるtrue/false


9
//By each()
var testval = [];
 $('.hobbies_class:checked').each(function() {
   testval.push($(this).val());
 });


//by map()
var testval = $('input:checkbox:checked.hobbies_class').map(function(){
return this.value; }).get().join(",");

 //HTML Code

 <input type="checkbox" value="cricket" name="hobbies[]"  class="hobbies_class">Cricket 
  <input type="checkbox" value="hockey" name="hobbies[]" class="hobbies_class">Hockey


デモの


5

この質問がjQueryソリューションを求めているという事実にもかかわらず、誰もそれを言及していないので、ここに純粋なJavaScriptの答えがあります。

jQueryなし:

要素を選択してcheckedプロパティにアクセスするだけです(ブール値を返します)。

var checkbox = document.querySelector('input[type="checkbox"]');

alert(checkbox.checked);
<input type="checkbox"/>


changeイベントをリッスンする簡単な例を以下に示します。

var checkbox = document.querySelector('input[type="checkbox"]');
checkbox.addEventListener('change', function (e) {
    alert(this.checked);
});
<input type="checkbox"/>


チェックされた要素を選択するには、:checked疑似クラスinput[type="checkbox"]:checked)を使用します。

以下は、チェックされたinput要素を反復処理し、チェックされた要素の名前のマップされた配列を返す例です。

ここに例

var elements = document.querySelectorAll('input[type="checkbox"]:checked');
var checkedElements = Array.prototype.map.call(elements, function (el, i) {
    return el.name;
});

console.log(checkedElements);


1
これは質問の答えにはなりません。
Michael Cole

@MichaelCole-私は(3年後)質問を再読しましたが、これは確かに質問に答えているようです。詳しく説明してください。
Josh Crozier

1
「jQueryでチェックボックスの値を取得するにはどうすればよいですか?」->「この質問はjQueryソリューションを求めているという事実にもかかわらず...何とか何とか何とか」。それは、他の実際の答えと同じように、石鹸箱の答えであり、それが私がそれを否定した理由です。
Michael Cole

1
@MichaelCole-十分に公正で、フィードバックは常に高く評価されています。この回答の本来の目的はchecked、ネイティブDOM要素でプロパティに簡単にアクセスできる場合、このような些細な場合でもjQueryを回避できることを示すことでした。このような質問/回答を検索する人の一部は、jQueryが必要でない場合があることを一般に認識していません。言い換えれば、狭心な人々はこの回答の対象となる人口統計ではありません。
Josh Crozier

2

チェックされているすべてのチェックボックスの値を配列として取得する方法は次のとおりです。

var values = (function() {
                var a = [];
                $(".checkboxes:checked").each(function() {
                    a.push(this.value);
                });
                return a;
            })()

2

チェックされたcheckboxexの値を取得するにはjquery

var checks = $("input[type='checkbox']:checked"); // returns object of checkeds.

for(var i=0; i<checks.length; i++){
    console.log($(checks[i]).val()); // or do what you want
});

pure js

var checks = document.querySelectorAll("input[type='checkbox']:checked");

for(var i=0; i<checks.length; i++){
    console.log(checks[i].value); // or do what you want
});


0
$('.class[value=3]').prop('checked', true);

1
問題は、特定のデフォルト値で何かをチェックする方法ではなく、値取得する方法を尋ねることです。
クエンティン

0

最善の方法は $('input[name="line"]:checked').val()

また、選択したテキストを取得できます $('input[name="line"]:checked').text()

ラジオボタンの入力に値の属性と名前を追加します。すべての入力に同じ名前属性があることを確認してください。

<div class="col-8 m-radio-inline">
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="1" checked> Value Text 1
    </label>
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="2"> Value Text 2
    </label>
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="3"> Value Text 3
    </label>
</div>

-1
<script type="text/javascript">
$(document).ready(function(){
    $('.laravel').click(function(){
        var val = $(this).is(":checked");
        $('#category').submit();
    });
});

<form action="{{route('directory')}}" method="post" id="category">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <input name="category" value="{{$name->id}}"  class="laravel" type="checkbox">{{$name->name}}
                      </form>

-1

2018年現在、APIは長年にわたって変化しているため、注意が必要です。removeAttrは廃止され、もう機能していません!

チェックボックスをチェックまたはチェック解除するjquery:

悪い、もう動かない。

   $('#add_user_certificate_checkbox').removeAttr("checked");

   $('#add_user_certificate_checkbox').attr("checked","checked");

代わりに、次のことを行う必要があります。

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