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

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

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

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

jQuery

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

Q&A

解決済

1回答

565閲覧

チェックボックスでフォームの表示項目を変えたい

YuuyaOta

総合スコア13

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/02/27 11:10

前提・実現したいこと

フォームの設置に際して「個別相談」「プレゼント」のチェックボックスをチェックしてもらい、
それぞれのチェック項目によって必須項目の表示・非表示をコントロールさせようと思っています。

2つともチェックした場合は「個別相談」+「プレゼント」の条件で反映させたいです。

発生している問題

「個別相談」「プレゼント」のチェックボックスをそれぞれ1つづつチェックした場合はうまく動作しているのですが、2つとも選択した場合にうまく動作しません。

2つチェックしようとすると、最後にチェックした項目の条件が反映されてしまい、
「個別相談」+「プレゼント」の条件になりません。

該当のソースコード

`

<script type="text/javascript"> jQuery(document).ready(function() { jQuery(function($) { $('input[name="お問い合わせ項目"]').on('load change', function(){ if($(this).val() == '個別相談'){ $('tr.hissuSoudan').show(); $('tr.hissuPresent').hide(); } else if($(this).val() == 'プレゼント'){ $('tr.hissuSoudan').hide(); $('tr.hissuPresent').show(); } else{ $('tr.hissuSoudan').show(); $('tr.hissuPresent').show(); } }); }); }); </script>

`

<form class="jqtransform" method="post" action="mail.php" onsubmit="return chkHissu(this)"> <table cellspacing="1" class="tbl-base"> <tbody> <tr> <th>お問い合わせ項目 </th> <td> <label><input type="checkbox" name="お問い合わせ項目" value="個別相談">個別相談</label><br> <label><input type="checkbox" name="お問い合わせ項目" value="プレゼント">プレゼント</label> </td> </tr> <tr class="hissuSoudan"> <th>電話番号(半角)<span><img src="images/ico_req.png" alt="必須"></span></th> <td><input type="text" name="電話番号" size="20" /></td> </tr> <tr class="hissuPresent"> <th>送り先住所 <span><img src="images/ico_req.png" alt="必須"></span></th> <td class="address"> <input class="right" type="text" name="郵便番号" placeholder="郵便番号" onKeyUp="AjaxZip3.zip2addr(this,'','都道府県','市区町村');" size="8" /><br/> <input type="text" name="都道府県" title="都道府県" placeholder="都道府県" size="30"/><br/> <input type="text" name="市区町村" title="市区町村" placeholder="市区町村" size="30"/><br/> <input type="text" name="町名番地" placeholder="町名番地" size="30"/><br/> <input type="text" name="ビル名・号室" placeholder="ビル名・号室" size="30"/></td> </tr> <tr class="hissuSoudan"> <th>ご相談希望日時 <span><img src="images/ico_req.png" alt="必須"></span></th> <td><input type="text" name="希望日時" size="20" /></td> </tr> <tbody> </table> <input type="submit" value="下記の内容に同意して申し込む" class="submit" /> </form>

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

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

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

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

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

guest

回答1

0

ベストアンサー

javascript

1$(function() { 2 $('input[name="お問い合わせ項目"]').on('change', function(){ 3 if($(this).is('[value=個別相談]')){ 4 $('tr.hissuSoudan').toggle($(this).prop('checked')); 5 } 6 if($(this).is('[value=プレゼント]')){ 7 $('tr.hissuPresent').toggle($(this).prop('checked')); 8 } 9 }).trigger('change'); 10});

もしくは

javascript

1$(function() { 2 $('input[name=お問い合わせ項目]').on('change', function(){ 3 $('tr.hissuSoudan').toggle($('input[name=お問い合わせ項目][value=個別相談]').prop('checked')); 4 $('tr.hissuPresent').toggle($('input[name=お問い合わせ項目][value=プレゼント]').prop('checked')); 5 }).eq(0).trigger('change'); 6});

投稿2019/02/27 11:24

編集2019/02/27 11:49
yambejp

総合スコア114843

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

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

cerfweb

2019/02/27 13:55 編集

補足ですが、name=お問い合わせ項目 や value=個別相談 は name="お問い合わせ項目"、value="個別相談" とした方がコードに何らかの手を加えた際(例えばnameの値を変えるなどした際)エラーが出にくいと思います。 また、<input type="checkbox" name="お問い合わせ項目" ...>は同じnameが2つ以上あると、送信先では最後の値しか受信できませんので、name="お問い合わせ項目[]"とし、JavaScriptの方もそれに伴って書き換えた方がいいかと思われます。現状では、「個別相談」「プレゼント」両方にチェックを入れて必須項目に入力後送信した場合と、一旦「個別相談」「プレゼント」両方にチェックを入れて必須項目に入力後「個別相談」のチェックを外してから送信した場合、送信先で受け取るデータは同じ内容になってしまいます。
YuuyaOta

2019/02/28 01:05

ありがとうございました! 解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問