前提・実現したいこと
ここに質問の内容を詳しく書いてください。
javascriptで2つチェックボックスをつけたらボタンが押せるようになるというのを実現したいのですが
なかなかうまくいきません。。。javascriptは全くの初心者で見様見真似で書いたものになります。
通常はグレーでボタンが押せなくなっているのですがチェック2つをつけたらボタンがに色がついてリンクも押せるようになることが実現したいです。
どうしてもチェックを2回押すと再びボタンが表示されてしまいます。
何卒ご教示お願い致します。
該当のソースコード
html
1<label><input type="checkbox" class="checkmark" name="hage[]" value="300"> チェック01</label> <label><input type="checkbox" class="checkmark" name="hage[]" value="301"> チェック02</label> <button type="submit" class="bt-wrap"> 2 <a href="" class="ticket-scrap" target="_blank">ボタン押せます</a> 3</button>
css
1.checkmark { 2 font-size: 1.2em; 3 font-weight: 600; 4 padding-left: 1.5em; 5 position: relative; 6 height: 1.5em; 7 margin: 1em auto; 8 cursor: pointer; 9} 10.checkmark:before { 11 content: ""; 12 display: block; 13 position: absolute; 14 width: 1em; 15 height: 1em; 16 top: 0; 17 left: 0; 18 bottom: 0; 19 margin: auto; 20 border: 2px solid #041E82; 21} 22.checkmark:after { 23 content: none; 24} 25input[type=checkbox].checkmark.checked:after { 26 content: ""; 27 display: block; 28 position: absolute; 29 width: 0.4em; 30 height: 0.9em; 31 top: 0; 32 bottom: 14px; 33 left: 5px; 34 margin: auto; 35 transform: rotate(45deg); 36 border-bottom: 8px solid #041E82; 37 border-right: 8px solid #041E82; 38} 39.bt-wrap.active { 40 pointer-events: all; 41 filter: grayscale(0); 42 opacity: 1; 43} 44.checkmark.checked:after { 45 content: ""; 46 display: block; 47 position: absolute; 48 width: 0.4em; 49 height: 0.9em; 50 top: 0; 51 bottom: 14px; 52 left: 5px; 53 margin: auto; 54 transform: rotate(45deg); 55 border-bottom: 8px solid #041E82; 56 border-right: 8px solid #041E82; 57} 58.bt-wrap.detail-view a { 59 background-color: #36B5FA; 60} 61 62
javascript
1 $(function () { 2 $(".bt-wrap").toggleClass('').prop("disabled", false); 3 $("input[type='checkbox']").on('change', function () { 4 $(this).toggleClass('checked'); 5 if ($(".checkmark:checked").length > 1) { 6 $('.bt-wrap').toggleClass('active').prop("disabled", false); 7 } else { 8 $('.bt-wrap').toggleClass('').prop("disabled", true); 9 } 10 }); 11 }); 12