1. ホーム
  2. javascript

[解決済み] jQuery $("#radioButton").change(...) が選択解除の際に発火しない

2022-04-22 13:58:38

質問

1ヶ月ほど前、ミットさんの質問には答えられませんでした。悲しいかな、私も今同じ状況に陥っています。

http://api.jquery.com/change/#comment-133939395

こんな状況です。ラジオボタンの変更を取り込むためにjQueryを使用しています。ラジオボタンが選択されると、エディットボックスが有効になります。ラジオボタンが選択されていないとき、エディットボックスを無効にしたい。

有効化はうまくいきます。グループ内の別のラジオボタンを選択すると change イベントは ではない が発射されました。誰かこれを修正する方法を知っていますか?

<input type="radio" id="r1" name="someRadioGroup"/> 

<script type="text/javascript">
    $("#r1").change(function () {
        if ($("#r1").attr("checked")) {
            $('#r1edit:input').removeAttr('disabled');
        }
        else {
            $('#r1edit:input').attr('disabled', true);
        }
    });
</script>

解決方法は?

のように見えます。 change() 関数は、ラジオボタンをチェックしたときのみ呼び出され、チェックを外したときには呼び出されません。 私が使った解決策は、すべてのラジオボタンにchangeイベントをバインドすることです。

$("#r1, #r2, #r3").change(function () {

あるいは、すべてのラジオボタンに同じ名前を付けることもできます。

$("input[name=someRadioGroup]:radio").change(function () {

以下は、動作中の jsfiddleの例 (クリス・ポーター氏のコメントから更新しました。)

Ray さんのコメントで、名前に . があります。これらの名前は、jQuery 1.7.2 では動作しますが、他のバージョンでは動作しません ( jsfiddleの例です。 ).