前提・実現したいこと
ワードプレス上の送信フォーム(MW WP FORMプラグイン使用)で、チェックボックスのチェックによって、表示/非表示を切り替える形をjqueryを使って実装していますが、確認画面に進んだ際、チェックした内容が意図したように表示されません。
後述「発生している問題」のケース3で、チェック内容を確認画面でも反映させるための修正方法をご教示いただけましたらありがたいです。
送信フォームの構成
送信フォームは、2つのチェックボックスと表示/非表示切り替え内容(テキストとラジオボタン)で構成。
チェックボックスは、①(name="ivent" children="a")と
チェックボックス②(name="ivent" children="b,c,d")で、同一グループ、必須(a,b,c,dから最低1つチェックが必要)にしてあります。
発生している問題
●ケース1:項目aをチェックし、表示された内容のラジオボタンにもチェック→問題なし(確認画面に反映される)
●ケース2:項目aをチェックせず、項目b,c,dのどれかをチェック→問題なし(確認画面に反映される)
●ケース3:項目aをチェックし、項目b,c,dのどれかをチェック→ 確認画面では、チェックボックスのチェック項目は反映されていますが、表示部分が非表示になり、ラジオボタンのチェック内容は反映されません。
1のケースでは、確認画面でも開いた部分は、開いたままになっています。
a以外のチェックにより、表示内容が非表示になっているようです。
条件分岐の方法が違っているのでしょうか。
該当のソースコード
単純化した内容のコードです。
html
1※複数選択可 2[mwform_checkbox name="ivent" children="a" vertically="true" id="checkbox"] 3<!--表示を切り替える内容--><div class="form_food" style="display: none;"> 希望の食べ物 4[mwform_radio name="food" id="food" children="ラーメン,ピザ,寿司"]</div> 5 [mwform_checkbox name="ivent" children="b,c,d" vertically="true"]
JQUERY
1jQuery(function($) { 2 var 3 checkbox = $("#checkbox-1"), 4 checkbox_change = function () { 5if (checkbox.length) { 6 if (checkbox.prop("checked")) { 7 $(".form_food").show(); 8 } else { 9 $(".form_food").hide(); 10 } 11} else { 12 // 確認画面用 13 if ($('input[value="a"]').length) { 14 $(".form_food").show(); 15 } else { 16 $(".form_food").hide(); 17 } 18} 19 }; 20 checkbox_change(); 21 checkbox.change(checkbox_change); 22});
回答1件
あなたの回答
tips
プレビュー