質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

879閲覧

2つチェックボックスをつけたらボタンを押せるようにしたい

nonnon1104

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/07/05 11:46

編集2021/07/05 12:35

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/07/05 12:27

細かいですが「チェックボタン」ではなく「チェックボックス」ですね。
nonnon1104

2021/07/05 12:29

失礼いたしました!確かにそうでしたね。。。ご指摘ありがとうございます!
m.ts10806

2021/07/05 12:29

あと、buttonタグ内にチェックボックスがあるというのはどういう意図でしょうか。構造的に謎です。
m.ts10806

2021/07/05 12:30

質問は編集できます
nonnon1104

2021/07/05 12:36

先ほど修正しました。間違えて<button>タグが入っておりましたので削除しておきました。
guest

回答1

0

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('[type=checkbox]').forEach(x=>{ 4 x.addEventListener('change',()=>{ 5 document.querySelector('[type=submit]').disabled=document.querySelectorAll('[type=checkbox]:checked').length!=2; 6 }); 7 }); 8}); 9</script> 10<form> 11<label><input type="checkbox" class="checkmark" name="hage[]" value="300"> チェック01</label>  <label><input type="checkbox" class="checkmark" name="hage[]" value="301"> チェック02</label> 12<button type="submit" class="bt-wrap" disabled>ボタン押せます</button> 13</form>

投稿2021/07/05 12:33

yambejp

総合スコア115010

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nonnon1104

2021/07/05 12:44

ご回答いただきありがとうございます!試してみます!
nonnon1104

2021/07/05 13:03

すみません実装してみたのですが .bt-wrap.activeの内容が反映されず。。。.toggleClass('active')をつけてみたのですがやはりチェックを外したりつけたりするたびにグレーになったり色がついたりの繰り返しになってしまいます。せっかくご回答いただいたのに申し訳ございません。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問