MW WP formで画面遷移の時のカーソル位置を変更したい

WordPress

MW WP formで確認画面、完了画面に遷移したとき、カーソル位置が一番上になってしまうんですよね。できればフォームの位置のまま遷移してほしいものです…

投稿ページの一番最後にお申込みフォームとして入れたい場合や、フォームの上にコンテンツがある場合に今回の方法は有効です。

管理画面からの設定で解決したい場合

管理画面のMW WP Formを選択して、編集したいフォームをクリックします。

画面右下の「設定欄」を確認してください。

「画面変遷時のスクロールを有効にする」というところをチェックすると、フォームの位置までスクロールしてくれるようです。知らなかった!

細かく設定したいのでJavascriptで行う方法

もう少し細かく修正したい、確認画面の時はこの位置に、完了画面の時はこの位置にスクロールする。など細かい設定がある場合はJavascriptでの対応となします。(「画面変遷時のスクロールを有効にする」のチェックは外してください)

プラグイン側で各画面の時にクラスを設定してくれています。このクラスを使って表示中の画面の種別を判定します。

  • .mw_wp_form_input(入力画面)
  • .mw_wp_form_confirm(確認画面)
  • .mw_wp_form_complete(完了画面)

HTMLの例(MW WP form側で出力するコードになります)

<div id="mw_wp_form_mw-wp-form-XX" class="mw_wp_form mw_wp_form_input  ">
<form method="post" action="" enctype="multipart/form-data">

確認画面の時の記述例

if ($(".mw_wp_form_confirm").length ) { // 確認画面の場合
    var ttl_position = document.querySelector('#contact').getBoundingClientRect().top; //移動したい要素
   
    // 該当までスクロール
    window.scrollTo(0, ttl_position);

  }

入力画面と入力エラー画面の判断はどうする?

入力画面を「.mw_wp_form_input」のクラス名のみで判定してしまうと、普通の表示の時も該当してしまいます。入力エラー画面との区別はエラー箇所に「.error」をいうクラスが付与されるので、そのクラスが存在したときにエラーと判断します。

確認画面から「戻るボタン」で入力画面に戻ったときの判断はどうする?

これも「.mw_wp_form_input」のクラス名のみでは判断できません。この場合は必須入力の項目が値が入っていれば「戻るボタン」での遷移だと判断しましょう。(プライバシーポリシーの同意チェックなどが必須のはずです)

関連記事