フィールド検証エラーのスクロール効果を無効にする方法

WPFormsが自動的にバリデーションエラーまでスクロールするのを止めたいですか?デフォルトでは、フォームにエラーがあると、それが単一ページのフォームであろうと改ページがあるフォームであろうと、WPForms は最初のエラーフィールドまでスクロールします。

このガイドでは、このスムーズスクロール効果を無効にし、代わりにページをエラーに直接ジャンプさせる方法を紹介する。

フォームの設定

まず、フォームを作成し、フィールドを追加する必要があります。フォームの作成にヘルプが必要な場合は、最初のフォームの作成方法をご覧ください。

スクロール効果を無効にする

スクロール効果を無効にするには、特定のフォームに対して無効にする方法と、サイト上のすべてのフォームに対して無効にする方法の 2 通りがあります。両方の方法を見てみましょう。

特定のフォームについて

1つのフォームだけスクロール効果を無効にしたい場合は、このコードスニペットを使用してください。カスタムコードの追加方法がわからない場合は、コードスニペットの追加ガイドをご覧ください。

/** Disable the scroll on field validation errors
 *
 *  @link   https://wpforms.com/developers/how-to-disable-the-scrolling-effect-on-field-validation/
 */
 
function wpf_dev_disable_scroll_to_error_by_form_id( $forms ) {
     
    // If scrollToError is disabled for at least one form on the page, it will be disabled for all the forms on the page.
 
    foreach ( $forms as $form ) {
 
        // Only run snippet on the form ID 1000
        if ( isset( $form[ 'id' ] ) && (int) $form[ 'id' ] === 1000 ) {
    ?>
 
            <script type="text/javascript">wpforms.scrollToError = function(){};</script>
 
    <?php
        }
    }
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_disable_scroll_to_error_by_form_id', 10, 1 );

コード中の1000は必ず自分のフォームIDに置き換えてください。フォームIDを探すのに助けが必要な場合は、フォームとフィールドのIDを探すガイドをご覧ください。

すべてのフォーム

このコードをすべてのフォームで実行させたい場合は、代わりにこのシンプルなスニペットを使ってください。

/** Disable the scrolling effect on field validation errors
 *
 *  @link   https://wpforms.com/developers/how-to-disable-the-scrolling-effect-on-field-validation/
 */
 
function wpf_dev_disable_scroll_to_error() {
 
    // If scrollToError is disabled for at least one form on the page, it will be disabled for all the forms on the page.
    ?>
 
    <script type="text/javascript">wpforms.scrollToError = function(){};</script>
 
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_disable_scroll_to_error', 10 );

どちらかのスニペットを追加すると、フォーム送信中にバリデーションエラーが発生した場合、ページがスムーズにスクロールする代わりに、すぐに最初のエラーにジャンプします。これにより、スムーズなスクロールよりも直接的なナビゲーションを好むユーザーにとって、よりインスタントなフィードバック体験が生まれます。

必要なのはこれだけです!複数ページのフォームを作成する際のスクロール速度を変更したいですか?詳しくはマルチページフォームのスクロール速度変更ガイドをご覧ください。

参考アクション

wpforms_wp_footer_end