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

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

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

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

Q&A

解決済

2回答

1277閲覧

jqueryで書いた記述をif文を使って短くしたい

yesma

総合スコア16

jQuery

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

0グッド

0クリップ

投稿2020/09/09 06:13

フォームの箇所にあるラジオボタンの選択によって表示・非表示する切り替えをしているのですが、書き方をif文をつかって短くしたいのですが、教えていただけないでしょうか?
自分で試しに書いてみたのですが、うまく動作がしなくなったので質問しました。

下記がコードになります。
ラジオボタンの箇所は、お問い合わせ内容のところになります。
また、表示・非表示が動作する項目は、募集要項です。
ご確認お願いします。

html

1<form method="post" action=""> 2 <dl> 3 <dt>お問い合わせ内容</dt> 4 <dd><label for="type-1" class="check_off"><input class="radio" type="radio" name="item1" value="お問い合わせ" id="type-1" /> 5 <span>お問い合わせ</span></label> 6 <label for="type-2" class="check_switch"><input class="radio" type="radio" name="item1" value="採用について" id="type-2" /> 7 <span>採用について</span></label> 8 </dd> 9 <div class="check_hide"> 10 <dt>募集要項</dt> 11 <dd> 12 <p> 13 <label for="type-3"> 14 <input class="check" type="checkbox" name="item2" value="塾事業" id="type-3" /> 15 <span>塾事業</span> 16 </label> 17 </p> 18 <p> 19 <label for="type-4"> 20 <input class="check" type="checkbox" name="item3" value="英語教育事業" id="type-4" /> 21 <span>英語教育事業</span> 22 </label> 23 </p> 24 <p> 25 <label for="type-5"> 26 <input class="check" type="checkbox" name="item4" value="留学支援事業" id="type-5" /> 27 <span>留学支援事業</span> 28 </label> 29 </p> 30 <p> 31 <label for="type-6"> 32 <input class="check" type="checkbox" name="item5" value="プログラミング教育事業" id="type-6" /> 33 <span>プログラミング教育事業</span> 34 </label> 35 </p> 36 <p> 37 <label for="type-7"> 38 <input class="check" type="checkbox" name="item6" value="高等学院事業" id="type-7" /> 39 <span>高等学院事業</span> 40 </label> 41 </p> 42 <p> 43 <label for="type-8"> 44 <input class="check" type="checkbox" name="item7" value="高等学院事業" id="type-8" /> 45 <span>保険事業</span> 46 </label> 47 </p> 48 </dd> 49 </div> 50 51 <dt>お名前</dt> 52 <dd><input type="text" name="item8" placeholder="お名前"></dd> 53 <dt>ふりがな</dt> 54 <dd><input type="text" name="item9" placeholder="ふりがな"></dd> 55 <dt>ご住所<span class="warning">必須</span></dt> 56 <dd class="postal_code"><input type="text" name="zip1" onKeyUp="AjaxZip3.zip2addr('zip1', 'zip2', 'address', 'address');" placeholder="432"/> - <input type="text" name="zip2" onKeyUp="AjaxZip3.zip2addr('zip1', 'zip2', 'address', 'address');" placeholder="8021"/></dd> 57 <p>半角数字で郵便番号を入力していただくと、自動で住所が表示されます。</p> 58 <dd><input type="text" name="item10" placeholder="静岡県浜松市中区佐鳴台5-28-2"/></dd> 59 <dt>電話番号</dt> 60 <dd><input type="tel" name="item11" placeholder="053-449-1144"></dd> 61 <dt>メールアドレス<span class="warning">必須</span></dt> 62 <dd><input type="mail" name="email" placeholder="xxxx@info.jp"></dd> 63 <dt>お問い合わせ内容</dt> 64 <dd><textarea name="item12"></textarea></dd> 65 </dl> 66 <button type="submit" name="submit01" value="内容を確認する" class="submit">内容を確認する</button> 67 </form>

javascript

1// お問い合わせフォームチェックボタンon off動作している js 2 3$('.check_switch').click(function(){ 4 if($("#type-2").prop('checked',true)) { 5 $('.check_hide').css({display:'block'}); 6 return false; 7 }else{ 8 } 9}); 10 11$('.check_off').click(function(){ 12 if($("#type-1").prop('checked',true)) { 13 $('.check_hide').css({display:'none'}); 14 return false; 15 }else{ 16 } 17}); 18 19コード

javascript

1コード 2// お問い合わせフォームチェックボタンon off動作しない js 3$('.check_switch').click(function(){ 4 if($("#type-2").prop('checked',true)) { 5 $('.check_hide').css({display:'block'}); 6 return false; 7 }else{ 8 $('.check_hide').css({display:'none'}); 9 } 10});

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

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

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

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

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

m.ts10806

2020/09/09 06:22 編集

>自分で試しに書いてみたのですが、うまく動作がしなくなったので エラー等でていないか確認してください。 「うまく動かない」は他者には何も伝わらない表現なので。
yambejp

2020/09/09 06:26

採用についてを選んだときだけ募集要項が表示されるということですか? ・両方選んでないときはなにも表示しない ・お問い合わせを選んだ場合は、募集要項のチェック項目をdisabledにする という作業が必要になります
guest

回答2

0

<script> $(document).ready(function() { // 最初はどちらも選択されていないので隠しておく $('.check_hide').css({display:'none'}); // 切り替え $('form [name="item1"]').change(function(){ if ($(this).val() == "お問い合わせ") { $('.check_hide').css({display:'block'}); } else { $('.check_hide').css({display:'none'}); } }); }); </script>

投稿2020/09/09 07:37

YakumoSaki

総合スコア2027

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

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

0

ベストアンサー

こんにちは。

根本的な誤解があると思います。

$("#type-2").prop('checked',true)は「#type-2にチェックをつけてjQueryオブジェクトを返す」という動作をします。
jQueryオブジェクトは真偽値に変換されると必ず真ですから、前者後者どちらのコードであってもif文が必ず成立しますので、意味がありません。

つまり、↓のコードは、

js

1$('.check_switch').click(function(){ 2 if($("#type-2").prop('checked',true)) { 3 $('.check_hide').css({display:'block'}); 4 return false; 5 }else{ 6 } 7}); 8 9$('.check_off').click(function(){ 10 if($("#type-1").prop('checked',true)) { 11 $('.check_hide').css({display:'none'}); 12 return false; 13 }else{ 14 } 15});

↓のコードと等価です。

js

1$('.check_switch').click(function(){ 2 $("#type-2").prop('checked',true); 3 $('.check_hide').css({display:'block'}); 4 return false; 5}); 6 7$('.check_off').click(function(){ 8 $("#type-1").prop('checked',true); 9 $('.check_hide').css({display:'none'}); 10 return false; 11});

これは、yesmaさんのご想定と異なるのではありませんか?

参考:

Returns: jQuery

.prop() | jQuery API Documentation

 

オブジェクトは、 [[IsHTMLDDA]] 内部スロットがある場合のみ偽値になります。このスロットは document.all にのみ存在し、 JavaScript を使用して設定することはできません。

Falsy (偽値) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN


書き方をif文をつかって短くしたいのですが、教えていただけないでしょうか?

上記の通りですので、コードを短くする前に、まず現状のコードを正しく書き直した方がいいかと思います。

投稿2020/09/09 07:23

Lhankor_Mhy

総合スコア36960

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

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

yesma

2020/09/12 05:47

たくさんのご意見ありがとうございました。 自分の知識不足を痛感しましたので、もう一度勉強します。 ご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問