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

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

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

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

jQuery

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

Q&A

解決済

2回答

368閲覧

JavaScriptでフォーム 連動と制限

pellx

総合スコア18

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2022/07/03 07:42

フォームで選択肢を連動させて選択の制限をしたいです。

選択リストA 選択肢:1、2、3
選択リストB 選択肢:4、5、6

★選択リストAが1の時、選択リストBは4、5しか選択できない
★選択リストAが2の時、選択リストBは5、6しか選択できない

汚いのですが、下記の記述でローカルでは動くことを確認したのですが、
サーバーにあげるとうまく動作しません。(エラーメッセージは出ませんでした)
記述方法がよくないのでしょうか。
inputの指定はidかclassでやりたいです。
またjQueryで書きましたが、JavaScriptに変更できたりしますでしょうか。

わがままを言って申し訳ないのですが、よろしくお願いいたします。

html

1 <form action="" class="form"> 2 3 <h3 for="name">選択リストA</h3> 4 5 <div class="form_list"> 6 <label for="">1<input type="checkbox" name="food01" value="1" id="food01"/></label> 7 <label for="">2<input type="checkbox" name="food02" value="2" id="food02"></label> 8 <label for="">3<input type="checkbox" name="food03" value="3" id="food03"></label> 9 </div> 10 11 <h3 for="name">選択リストB</h3> 12 <div class="form_list"> 13 <label for="">4<input type="checkbox" name="food04" value="4" id="food04"/></label> 14 <label for="">5<input type="checkbox" name="food05" value="5" id="food05"></label> 15 <label for="">6<input type="checkbox" name="food06" value="6" id="food06"></label> 16 </div> 17 18 <input type="button" id="" value="送信"> 19 20 </form> 21

JavaScript

1 $(function(){ 2 checkedButton(); 3 4 $('#food01,#food02').change(function(){ 5 checkedButton(); 6 }); 7 8 function checkedButton(){ 9 if($('#food01').prop('checked')){ 10 $('#food04').prop('disabled', true); 11 }else{ 12 $('#food04').prop('disabled', false); 13 }; 14 15 if($('#food02').prop('checked')){ 16 $('#food05').prop('disabled', true); 17 }else{ 18 $('#food05').prop('disabled', false); 19 }; 20 } 21 22}); 23

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

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

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

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

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

nae_stage

2022/07/03 08:04

javascriptはhtmlとは別ファイルでしょうか? もしそうなら、 ブラウザの開発者ツールなどで確認した際、当該ファイルは読み込まれていますでしょうか?
pellx

2022/07/03 08:20

ご連絡ありがとうございます。 はい、ファイルは読み込まれているのを確認いたしました。 回答に書かせていただいたのですが、少し変更したら動くようになりました。
guest

回答2

0

javascript

1<script> 2document.addEventListener('change',e=>{ 3 const t=e.target; 4 if(t.matches('[data-disable]')){ 5 const dis=[...document.querySelectorAll('[data-disable]:checked')].map(x=>x.dataset.disable); 6 [...document.querySelectorAll('.target')].forEach(x=>x.disabled=dis.includes(x.value)); 7 } 8}); 9window.addEventListener('DOMContentLoaded', ()=>{ 10}); 11</script> 12<form> 13<h3>選択リストA</h3> 14<div class="form_list"> 15<label>1<input type="checkbox" name="food01" value="1" data-disable="6"></label> 16<label>2<input type="checkbox" name="food02" value="2" data-disable="4"></label> 17<label>3<input type="checkbox" name="food03" value="3"></label> 18</div> 19<h3>選択リストB</h3> 20<div class="form_list"> 21<label>4<input type="checkbox" name="food04" value="4" class="target"></label> 22<label>5<input type="checkbox" name="food05" value="5" class="target"></label> 23<label>6<input type="checkbox" name="food06" value="6" class="target"></label> 24</div> 25<input type="submit" value="送信"> 26</form>

投稿2022/07/03 08:31

yambejp

総合スコア114829

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

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

pellx

2022/07/04 12:33

ありがとうございました!参考にいたします。
guest

0

自己解決

idを記述をまとめていたのを分けたら何故か動くようになりました。

JavaScript

1 $(function(){ 2 checkedButton(); 3 4 $('#food01).change(function(){ 5 checkedButton(); 6 }); 7 8 function checkedButton(){ 9 if($('#food01').prop('checked')){ 10 $('#food04').prop('disabled', true); 11 }else{ 12 $('#food04').prop('disabled', false); 13 }; 14 } 15}); 16 17 $(function(){ 18 checkedButton(); 19 20 $('#food02).change(function(){ 21 checkedButton(); 22 }); 23 24 function checkedButton(){ 25 if($('#food02').prop('checked')){ 26 $('#food03').prop('disabled', true); 27 }else{ 28 $('#food03').prop('disabled', false); 29 }; 30 } 31}); 32

投稿2022/07/03 08:18

pellx

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問