複数のチェックボックスを全て選択したときに押せるようになるボタンを作成したいです。
元々1つのチェックボックスで1つのボタンを制御するような仕様でしたが、
クライアントの希望で選択必須のチェックボックスが3つに増えました。
できれば現在のコードを元に修正したいのですが、どうすればよいでしょうか?
HTML
1<!--checkbox1--> 2 <input type="checkbox" name="name1" id="check1"><label for="check1">同意します-1</label> 3<!--checkbox2--> 4 <input type="checkbox" name="name2" id="check2"><label for="check2">同意します-2</label> 5<!--checkbox3--> 6 <input type="checkbox" name="name3" id="check3"><label for="check3">同意します-3</label> 7 8<button type="submit" id="btn">すべて同意して送信</button>
javascript
1$(function(){ 2 $("#check1").removeAttr("checked"); 3 $("#btn").attr("disabled", "disabled"); 4 $("#btn").addClass("inactive"); 5 $("#check1").click(function() { 6 if (this.checked) { 7 // チェックon時 8 $("#btn").removeAttr("disabled"); 9 $("#btn").removeClass("inactive"); 10 } else { 11 // チェックoff時 12 $("#btn").attr("disabled", "disabled"); 13 $("#btn").addClass("inactive"); 14 } 15 }); 16});
###補足
チェックoff時は.inactiveでボタンに半透明のスタイルをあてています。
ユーザビリティ的にもチェックのon/offでclassの付与はそのままにしたいです。
HTMLは必要と思われる個所だけ抜き出していますので、不足している記述などあればご指摘ください。
追記いたします。
###追記
tomohiro_obara様に貼っていただいたURLの方法応用したところ、うまくいきました。
(私のような方のために修正したコード記載いたします。)
html
1<div id="wrapper"> 2 <input type="checkbox" name="name1" id="check1" class="checkbox"><label for="check1">同意します-1</label> 3 <input type="checkbox" name="name2" id="check2" class="checkbox"><label for="check2">同意します-2</label> 4 <input type="checkbox" name="name3" id="check3" class="checkbox"><label for="check3">同意します-3</label> 5 6 <button type="submit" id="btn">すべて同意して送信</button> 7</div>
$(function(){ $('.checkbox').click(function(){ var check_count = $('#wrapper :checked').length; if (check_count == 3 ){ // チェックon時 $("#btn").removeAttr("disabled"); $("#btn").removeClass("inactive"); } else { // チェックoff時 $("#btn").attr("disabled", "disabled"); $("#btn").addClass("inactive"); } }); });
他お二方のご回答も勉強になりました。
皆さん早々にご回答いただき本当にありがとうございました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/26 03:41