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

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

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

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2249閲覧

ラジオボタンとチェックボックスが入力されたら送信ボタンがアクティブボタンのjs

kk_0000

総合スコア7

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/08/05 17:08

編集2019/08/05 17:41

前提・実現したいこと

申し込みフォームを作成しています。
ラジオボタン、チェックボックス、テキストアリアの項目で、
ラジオボタンとチェックボックスの両方が入力されたら送信ボタンがアクティブになるようにしたいです。
またチェックボックスの選択がなければ送信ボタンが非アクティブになるようにしたいです。

該当のソースコード

<form action='' method='post' id=""> <div id="question01"> <ul class="radio"> <li><input type="radio" id="" name="" value=""><label for="">aaaa</label></li> <li><input type="radio" id="" name="" value=""><label for="">bbbb</label></li> </ul> </div> <div id="question02"> <ul class="checkbox"> <li><input type="checkbox" id="" name="" value=""><label for="">cccc</label></li> <li><input type="checkbox" id="" name="" value=""><label for="">dddd</label></li> </ul> </div> <div id="question03"> <textarea id="" name=""></textarea> </div> <div id=""> <ul><li><button class="" type="submit" name="" value="">送信</button></li></ul> </div> </form>

試したこと

「checkValidity();」「change()」「$element.prop('checked', true);」など試しましたがラジオボタン、チェックボックスどちらかをチェックでアクティブにすることはできるのですが、両方チェックで実現することができませんでした。

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

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

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

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

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

kei344

2019/08/05 17:20

(質問文は編集できます)質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。 また、ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
kei344

2019/08/05 17:51

「checkValidity();」「change()」「$element.prop('checked', true);」とだけ、どこかに書いたのでしょうか。コードはなるべく全体像がわかるように提示される事をお勧めします。
kk_0000

2019/08/05 17:51

大変失礼いたしました。 ラジオボタン、チェックボックス片方ではわかるのですが、両方での実現ができません。
guest

回答1

0

ベストアンサー

こんな感じです

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 [].forEach.call(document.querySelectorAll('#f1 input'),x=>{ 4 x.addEventListener('change',e=>{ 5 var flg1=document.querySelector('#f1 [type=radio]:checked')!==null; 6 var flg2=document.querySelector('#f1 [type=checkbox]:checked')!==null; 7 // console.log([flg1,flg2,flg1&&flg2]); 8 document.querySelector('#s1').disabled=!(flg1&&flg2); 9 }); 10 }); 11}); 12</script> 13 14<form method='post' id="f1"> 15 <div id="question01"> 16 <ul class="radio"> 17 <li><label><input type="radio" name="r1" value="">aaaa</label></li> 18 <li><label><input type="radio" name="r1" value="">bbbb</label></li> 19 </ul> 20 </div> 21 <div id="question02"> 22 <ul class="checkbox"> 23 <li><label><input type="checkbox" name="c1" value="">cccc</label></li> 24 <li><label><input type="checkbox" name="c2" value="">dddd</label></li> 25 </ul> 26 </div> 27 <div id="question03"> 28 <textarea iname="t1"></textarea> 29 </div> 30 <div id=""> 31 <ul><li><button type="submit" id="s1" disabled>送信</button></li></ul> 32 </div> 33</form>

IE対応

IEは次第に動かないものが増えていきます
とりあえず対応版だけあげておきます。

javascript

1window.addEventListener('DOMContentLoaded', function(){ 2 [].forEach.call(document.querySelectorAll('#f1 input'),function(x){ 3 x.addEventListener('change',function(){ 4 var flg1=document.querySelector('#f1 [type=radio]:checked')!==null; 5 var flg2=document.querySelector('#f1 [type=checkbox]:checked')!==null; 6 document.querySelector('#s1').disabled=!(flg1&&flg2); 7 }); 8 }); 9});

投稿2019/08/06 00:20

編集2019/08/06 07:28
yambejp

総合スコア114769

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

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

kk_0000

2019/08/06 07:23

ありがとうございます。 希望通りの動作ができました!ただ、IEで動作しません。 「disabled」がはずれないのが原因かと思いますが、難しいでしょうか。 ちなみにボタンをホバーで切り替える画像にしたかったため、htmlを下記のように書き換えましたが、これが関係しているのでしょうか。 <li><input type="radio" name="r1" value=""><label>bbbb</label></li>
yambejp

2019/08/06 07:28

IE対応版あげておきました
kk_0000

2019/08/08 03:01

希望通りの動きができました、ありがとうございます! まだまだ勉強中でしたので大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問