MW_WP_FORMの確認画面でメールフォームの位置に移動させる方法
- 2020.06.14
- javascript WordPress
WordPressでメールフォームを作るときに、MW_WP_FORMが便利ですよね。
僕もよく使います。
確認画面を、別ページを用意せず、そのページ内で表示させるときに、ページの先頭にいってしまいます。
それを解消する為のjavascriptを書きます。
エラーの時、確認画面から入力画面にもどる時、送信完了の時も合わせて書いていきます。
全部まとめて書いているものも最後に用意しています。
目次
確認画面のときにメールフォームの位置に移動させる
MW_WP_FORMの確認画面の時にはフォームのdivに mw_wp_form_confirm というクラスが入ります。
そのクラスがあるかないかで、確認画面かどうかを判定。
あったら、フォームの位置に移動をします。
// フォームのdivを取得
var mwwpform = document.querySelector('.mw_wp_form');
// .mw_wp_form_confirmがあればフォームの位置へ移動
if(mwwpform.classList.contains('mw_wp_form_confirm')) {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
}
エラーがあったときにフォームの位置に移動させる
エラーのときも、何も指定しなければページの先頭に移動させられてしまいます。
エラーのときはエラー内容を表示させる error というクラスのついた要素が出てきます。
error クラスの要素があるかないかで、エラー画面かどうかを判定し、エラー画面であればフォームの位置に移動させます。
// メールフォームのdivを取得
var mwwpform = document.querySelector('.mw_wp_form');
// .error の要素を取得
var error = document.querySelector('.error');
// .error の要素があればフォームの位置へ移動
if(error){
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
}
確認画面から修正で戻ってきたときにフォームの位置へ移動させる
こちらも考え方は上ふたつと同じです。
確認画面から修正で戻ってきたことを判別し、そうであればフォームの位置に移動させる。
一度修正画面にいけたということは、必須項目が全部入力されているということです。
なので、必須項目のvalueに値が入っていれば、確認画面から修正で戻ってきたということとします。
// いちばん最初の入力項目が必須だったとします
// フォームのdivを取得
var mwwpform = document.querySelector('.mw_wp_form');
// 最初の入力項目を取得
var inputValue = document.querySelector('.mw_wp_form input');
// 最初の入力項目に値が入っていればフォームの位置へ移動
if (!inputValue.value == '') {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
}
送信完了画面の時にフォームの位置へ移動させる
送信完了のときは、フォームのdivに mw_wp_form_complete というクラスが入ります。
// フォームのdivを取得
var mwwpform = document.querySelector('.mw_wp_form');
// .mw_wp_form_completeがあればフォームの位置へ移動
if (mwwpform.classList.contains('mw_wp_form_complete')) {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
}
ぜんぶまとめて指定したスクリプト
// フォームのdiv取得
var mwwpform = document.querySelector('.mw_wp_form');
// .errorを取得
var error = document.querySelector('.error');
// 最初の入力項目を取得
var inputValue = document.querySelector('.mw_wp_form input');
// 条件分岐
if(mwwpform.classList.contains('mw_wp_form_confirm')){
window.addEventListener ('load', function () {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
});
} else if(error) {
window.addEventListener ('load', function () {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
});
} else if (!inputValue.value == '') {
window.addEventListener ('load', function () {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
});
} else if (mwwpform.classList.contains('mw_wp_form_complete')) {
window.addEventListener ('load', function () {
window.scrollTo(0, mwwpform.getBoundingClientRect().top);
});
}
フォームの位置への移動が微妙にずれる場合があるので、移動のタイミングをwindowのロード完了後にしています。
-
前の記事
javascriptで扱う正規表現メモ 2020.06.07
-
次の記事
TOEIC655点でした 2022.02.11