Contact Form 7を使い倒す② 「どちらか」必須にしたい時

前回に引き続き、所属するスキー学校の予約フォーム案件の話。

レッスン予約

こちらのインターネット予約は、 極楽坂エリア専用 となりますのでご注意ください。らいちょうバレーエリア・あわすのエリアについては、お電話にてご予約ください。 (1)予約内容の変更・キャンセルについては 前日までに お電話または予約確認メールに返信いただきその旨をお伝えください。なお 当日のキャンセルについてはお電話のみ で承ります。 (2)当日は各講習 開始時間の20分前までに …

年齢または学年といった風に、どちらかの要素の選択をしてもらわないといけないことが発生した場合の対応方法。実際には「学年(年齢)」によって、受講できる内容が異なるために、3つの年齢層に応じて分岐を設定。「~小学2年生」、「小学3年生~小学6年生」、「中学生以上(大人)」の3つの年齢層を設定してます。

1)冒頭に年齢選択

また、この選択肢をチェック後に表示される部分は「<div id=”after_sel”>~</div>」で囲んであり、radioでいずれか一つが選ばれていないと次に進まないようになっています。また、Contact Form 7の仕様上、radioはいずれか一つが最初に選択されてしまいますので、下記のjQueryのコードで、radioの選択をクリアにしています。

2)Contact Form 7のコード

詳細は完成形に。冒頭にラジオボックスで「学年(年齢)」の層を選択させて、そのうえで、<div>~</div>で囲んだフォームを表示させるようにjQueryで仕込んであります。

また、中学生以上は「年齢(必須)」、それ以下は「学年」と表示されるように<span>~</span>要素内に記載して、切り替える方向。

キモは最終行。他のselect要素やテキストボックスは「必須」とせず、最後にチェックボックスを必須として設定。年齢の入力状況や学年の選択状況に応じて、jQuery側でチェックボックスを制御しておけば、いずれか1つの選択を必須とできるようになる。

3)jQueryのコード

適当にjsファイルを作るなどして、ロードしてください。

ageに半角スペースや記号が入力されてても通るので、正規表現チェックなど改良が必要ですが・・・

 

今回は冒頭の選択肢に応じて、表示させるものを変更して対応しましたが、学年の選択肢と年齢のテキストボックスを設置して、どちらか一方に入力されていればOKといった判定にも利用することができます。またこのチェックボックスは隠すのがコツです。また、場所は選択肢の下に設置しておくと、送信時に入力が抜けていればエラーメッセージだけを表示させることができます。

非常に便利なContact Form 7ですが、ちょっと突っ込んだことをしたいときにはひと手間を加える必要がありますが、こうしたフォームを一から作るとバリデーションが大変だったりするので、楽するところは楽させていただきます。また、jQueryのコードは勢いで作ってるので、無駄がたくさん(笑)

2018年1月5日 kaneyan 未分類 No Comments

Share Your Thoughts

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください