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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

checkbox

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

jQuery

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

Q&A

解決済

1回答

373閲覧

ラジオボタン向けのコードをチェックボックスで使用したい

bigcat

総合スコア24

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

checkbox

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

jQuery

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

0グッド

0クリップ

投稿2019/01/01 03:29

編集2019/02/19 13:57

前提・実現したいこと

ワードプレスでのmw wp formを使った入力フォームについてです。
jqueryを使ってチェックボックスの特定要素のチェックで、テキストや別の入力項目を開閉させたいです。
参考事例があたのですが、ラジオボタン用だったので、チェックボックス用にコードを変更する方法をご教示いただきたいです。

試したこと

以下の参考サイトでラジオボタンを使った参考事例があったので、このコード(jquery,html)のradioをcheckboxに置き換えて試してみましたが動きません。サイトはこちら
元のradioでは動くので、checkboxは同じ記述方法ではだめだと思いました。自力でコードが書けないので、同様の事例を探しましたが、見付けることができませんでした。

ラジオボタン用のコード(これをチェックボックスで使いたい)

jQuery

1jQuery(function($) { 2 $('[name="pickup"]:radio').change(function() { 3 $(".pickup-op").hide(); 4 if ($("input:radio[name='pickup']:checked").val() == "1") { 5 $('.pickup-op').show(); 6 } else if($("input:radio[name='pickup']:checked").val() == "2") { 7 $("input[name='pickupDate']").val(""); 8 $("select[name='pickupTime']").val("0"); 9 } 10 }).trigger('change'); 11}); 12

●htmlコードです。

html

1 2〜 略 〜 3<tr> 4<th>集荷手配</th> 5<td>[mwform_radio name="pickup" id="pickup" value="2" children="1:必要,2:不要"]</td> 6</tr> 7<tr class="pickup-op"> 8<th>集荷希望日</th> 9<td>[mwform_datepicker name="pickupDate" id="pickupDate" js="minDate:3" placeholder="申込日より3日以降で指定できます。"]</td> 10</tr> 11<tr class="pickup-op"> 12<th>集荷希望時間</th> 13<td>[mwform_select name="pickupTime" id="pickupTime" children="0:指定なし,1:〜13:00,2:14:00〜16:00,3:16:00〜18:00,4:18:00〜21:00"]</td> 14</tr> 15〜 略 〜

※追加【修正したコード1】

jQuery(function($) { $('[name="pickup"]:checkbox').change(function() { $(".pickup-op").hide(); if ($(input:checkbox[name='pickup']).prop('checked').val() == "1"){ $('.pickup-op').show(); } else if($(input:checkbox[name='pickup']).prop('checked').val() == "2") { $("input[name='pickupDate']").val(""); $("select[name='pickupTime']").val("0"); } }).trigger('change'); });

※再追加【修正したコード2】

html

1 2〜 略 〜 3<tr> 4<th>集荷手配</th> 5<td>[mwform_checkbox name="pickup" id="pickup" value="2" children="1:必要,2:不要"]</td> 6</tr> 7<tr class="pickup-op"> 8<th>集荷希望日</th> 9<td>[mwform_datepicker name="pickupDate" id="pickupDate" js="minDate:3" placeholder="申込日より3日以降で指定できます。"]</td> 10</tr> 11<tr class="pickup-op"> 12<th>集荷希望時間</th> 13<td>[mwform_select name="pickupTime" id="pickupTime" children="0:指定なし,1:〜13:00,2:14:00〜16:00,3:16:00〜18:00,4:18:00〜21:00"]</td> 14</tr> 15〜 略 〜

jquery

1jQuery(function($) { 2 $('[name="pickup"]:checkbox').change(function() { 3 $(".pickup-op").hide(); 4 if ($(input:checkbox[name='pickup']).prop('checked').val() == "1"){ 5 $('.pickup-op').show(); 6 } else($(input:checkbox[name='pickup']).prop('checked').val() == "2") { 7 $("input[name='pickupDate']").val(""); 8 $("select[name='pickupTime']").val("0"); 9 } 10 }).trigger('change'); 11});

▼html出力

html

1<label for="pickup-1"> 2 <input type="checkbox" name="pickup[data][]" value="1" id="pickup-1"> 3 <span class="mwform-checkbox-field-text">必要</span> 4 </label>

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

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

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

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

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

cerfweb

2019/02/18 14:46

チェックボックスを使う理由はどういったことですか。
bigcat

2019/02/18 15:18

返信ありがとうございます。 例えば、チェックボックスで、特定のイベントなどを選択した場合に、食べ物を選択するチェックボックスが開くといった使い方です。
cerfweb

2019/02/18 15:21

つまり、「必要」「不要」の2択の代わりにチェックボックスにチェックが入っているかいないかで処理を分けるということですね。
bigcat

2019/02/19 01:02

ご丁寧にありがとうございます。教えていただいたコードも試してはいたのですが、対象要素の記述が違っているようです。修正したコードを質問に追記しました。
cerfweb

2019/02/19 07:07

回答に追記しましたのでご確認ください。
bigcat

2019/02/19 11:53 編集

ありがとうございます。ただ、ご教示いただいたようにしたのですが、最初から開いたままで、チェックボックスをon,offしても変化がありません。ラジオボタンの場合だと最初は2(不必要)にチェックが入った状態で閉じていて、1にチェックで開きます。 チェックボックスでは、複数選択可で1にチェックが入っている場合に開くようにしたいのですが、.val() == "1"が間違っているのでしょうか。.val() == "1"を外した状態でも変化はありません。
cerfweb

2019/02/19 12:00

ラジオボタン用に書き換えたコード(HTMLとjQuery)をそれぞれ更に追記していただけますか。
cerfweb

2019/02/19 12:25

[mwform_checkbox name="pickup" id="pickup" value="2" children="1:必要,2:不要"] の部分で実際にどんなhtmlが出力されていますか。 また、「必要」「不要」の2択ならcheckboxではなくradioの方が適していると思うのですがどういう理由でcheckboxにされているのでしょうか。 あと、jQueryのコード if ($(input:checkbox[name='pickup']).prop('checked').val() == "1") の書き方は間違っています。
bigcat

2019/02/19 12:40

すみません、サンプルが紛らわしかったようです。この例を応用して、多数の選択肢の中で1つのイベント等を選択した際、食べ物等を選ぶ、新たなチェックボックスを表示させるのを実現したいと考えていました。 長らくお付き合いいただいたのに申し訳ございません。今回の件は、手に負えそうにないので、別の方法を考えたいと思います。 1つ教えていただけたらありがたいのですが、チェックボックス1を選択したかどうかを判別のコードの記載方法は、 if ($(input:checkbox[name='pickup']).prop('checked').val() == "1") は正しくはどのようにすればよいでしょうか。
cerfweb

2019/02/19 13:47 編集

出力されるHTMLさえわかればjQueryのセレクタの書き方も間違っていないか検証できるのですが・・・ チェックボックス1を選択したかどうかを判別するコードの記載方法は基本的に回答欄に記したとおりです。 あとはセレクタ(具体的には $(input:checkbox[name="pickup"]) と書いている部分)さえ正確に指定できれば動くはずです。
bigcat

2019/02/19 13:58

質問部分に追記しましたが、この内容でよかったでしょうか。
cerfweb

2019/02/19 14:13

はい、その部分ですね。 そこにはjQuery部分の最初の方に書いてある $('[name="pickup"]:checkbox') に該当するものがないので記載されているスクリプトは動きません。その部分だけに限れば$('#pickup-1').change(function(){...});で、クラス名を割り振ることができれば$('クラス名').change(function(){...});のような書き方で発火させられます。
bigcat

2019/02/19 14:59 編集

時間がかかりそうですが、色々調べながらやってみたいと思います。 ご丁寧にありがとうございました。
guest

回答1

0

ベストアンサー

チェックボックスがチェックされているかどうかの判別は

jQuery

1$(...).prop('checked')

を条件文に使えばできます。...の部分は対象となる要素を指定してください。

チェックされていたら上記コードはtrue、チェックされていなければfalseを返します。
ですので条件文は

javascript

1if ($(input:checkbox[name='pickup']).prop('checked').val() == "1")

ではなく

javascript

1if ($(input:checkbox[name="pickup"]).prop('checked')) { 2 // チェックされていた時の処理 3} else { 4 // チェックされていなかった時の処理 5}

のようになります。

投稿2019/02/18 15:37

編集2019/02/19 13:42
cerfweb

総合スコア1899

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問