以下のコードでcheckboxを3つまでしかcheckできないコードを書きました。
jQuery
1$(function (){ 2 $('.check-max3').click(function () { 3 let checked_length = $('.check-max3:checked').length; 4 5 // 選択上限は3つまで 6 if (checked_length >= 3) { 7 $('.check-max3:not(:checked)').prop('disabled', true); 8 } else { 9 $('.check-max3:not(:checked)').prop('disabled', false); 10 } 11 }); 12}); 13
「プロフィール作成画面」では問題なくcheckを3つまでしか付けられないのですが、「プロフィール編集画面」の際(あらかじめ3つcheckedがついた状態で表示されます。)では4つ目のcheckができてしまいます。
画面が表示されてからscriptが動作しているのか確認のため、 alert()を追加してみました。
jquery
1$(function (){ 2 alert("アラートを表示します。") 3 $('.check-max3').click(function () { 4 let checked_length = $('.check-max3:checked').length; 5 6 // 選択上限は3つまで 7 if (checked_length >= 3) { 8 $('.check-max3:not(:checked)').prop('disabled', true); 9 } else { 10 $('.check-max3:not(:checked)').prop('disabled', false); 11 } 12 }); 13});
そうすると、プロフィール編集画面を表示した際にalretが表示されたので、scriptは画面読み込み時に実行されていると認識しています。
ではなぜプロフィール編集画面(あらかじめcheckedが3つ付いた状態)を表示したときに4つ目のcheckが出来てしまうのかが分かりません。
html、CSSも提示してください。
回答3件
あなたの回答
tips
プレビュー