jQueryを使用してチェックボックスの変更を処理する方法は?


106

コードがあります

<input type="checkbox" id="chk" value="value" />
<label for="chk">Value </label>
<br/>
<input type="button" id="But1" value="set value" />
<br />
<input type="button" id="But2" value="read checked" />

javascript:

$(document).ready(function () {
    console.log("Ready ...");
    registerHandlers();

    function registerHandlers() {
        $('#But1').click(function () {
            $('#chk').prop('checked', !$('#chk').is(':checked'));
        });
        $('#But2').click(function () {
            var chk1 = $('#chk').is(':checked');
            console.log("Value : " + chk1);
        });

        $('input[type="checkbox"]').change(function () {
            var name = $(this).val();
            var check = $(this).prop('checked');
            console.log("Change: " + name + " to " + check);
        });
    }
});

jQueryを使用してチェックボックスの変更を処理するにはどうすればよいですか?チェックしたチェックボックスを変更するためにハンドラーを配置する必要があります。

[更新]

チェックボックスといくつかのボタンがあります。各ボタンはチェックボックスを変更できます。チェックボックスを変更するイベントをキャッチする方法は?

[更新]

この例のjsfiddleでハンドル変更チェックボックスが必要です。ボックスをクリックすると、「OK」ボタンが表示されません。


私はあなたの問題を本当に理解していませんか?チェックボックスを変更するとどうなりますか?
Niklas

どうしたの?このコードは問題なく動作するようです
JaredPar

2
質問を言い換えてください。$( 'input [type = "checkbox"]')。changeハンドラーは既にありますが、何が問題ですか?
Madman

ボタンのチェックボックスを変更した場合、変更イベントは発生しません
BILL

3
ご参考までに; $('#chk').prop('checked')属性の値ではなくブール値を返します。api.jquery.com/propを
Stefan

回答:


163

:checkboxセレクターを使用:

$(':checkbox').change(function() {

        // do stuff here. It will fire on any checkbox change

}); 

コード:http : //jsfiddle.net/s6fe9/


75
... this.checkedチェックボックスがチェックされているかどうかを判断するのに非常に役立ちます。
Stefan

1
複数のハンドラーを登録することは可能ですか?
BILL

1
これは2015年にも推奨されますか?
Eugen Sunic 2015年

2
APIが変更されたようではないので、そうです。
Samich

これは$(document).ready(function()...の内側にある必要があります...私にとっては正しいですか?
kaya

66

フィールドのIDも使用できます

$('#checkbox1').change(function() {
   if($(this).is(":checked")) {
      //'checked' event code
      return;
   }
   //'unchecked' event code
});

17

これが何らかの助けになることを願っています。

$('input[type=checkbox]').change(function () {
    if ($(this).prop("checked")) {
        //do the stuff that you would do when 'checked'

        return;
    }
    //Here do the stuff you want to do when 'unchecked'
});

6
jQuery 1.6以降では、チェックボックスの実際の状態で動的に変化するため、$(this).prop( "checked")を使用することをお勧めします。
hrabinowitz 14

3
.attr( "checked")は不正解です。ユーザーがクリックしても更新されないためです。@hrabinowitzのコメントを確認します。
エイドリアン2014年

7
$("input[type=checkbox]").on("change", function() { 

    if (this.checked) {

      //do your stuff

     }
});

1
投稿する前に、独自のコードの動作を確認してください。セレクターに重大な問題があります...
Jonathan

live()は非推奨です。
guettli 2017

4
$('#myForm').on('change', 'input[type=checkbox]', function() {
    this.checked ? this.value = 'apple' : this.value = 'pineapple';
});

3
答えを詳しく説明してください。コードのみのソリューションは説明されないため修正される(存在する場合)ため、削除される可能性が高くなります。
rekaszeru 2014

申し訳ありませんが、@ rekaszeru次回はもっとうまくいきます
エバートンZP

0

removePropがChromeで正しく機能していないようです: jsfiddle

        $('#badBut1').click(function () {
        checkit('Before');
        if( $('#chk').prop('checked') )
        {
          $('#chk').removeProp('checked');
        }else{
            $('#chk').prop('checked', true);
        }
        checkit('After');
    });
    $('#But1').click(function () {
        checkit('Before');
        if( $('#chk').prop('checked') )
        {
          $('#chk').removeClass('checked').prop('checked',false);
        }else{
            $('#chk').addClass('checked').prop('checked', true);
        }
        checkit('After');
    });

    $('#But2').click(function () {
        var chk1 = $('#chk').is(':checked');
        console.log("Value : " + chk1);
    });

    $('#chk').on( 'change',function () {
        checkit('Result');
    });
    function checkit(moment) {
        var chk1 = $('#chk').is(':checked');
        console.log(moment+", value = " + chk1);
    };

イベントなしでチェックボックスを切り替える方法(外部から):jsfiddle.net/k91k0sLu/1
laurent belloeil

0

名前でラジオ値を取得する

  $('input').on('className', function(event){
        console.log($(this).attr('name'));
        if($(this).attr('name') == "worker")
            {
                resetAll();                 
            }
    });
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.