質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

752閲覧

【情報追加しました】WordPressのお問い合わせフォームにページ離脱アラートを動作させたい

yujill

総合スコア12

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/03/23 10:25

編集2020/03/24 07:59

https://fukuro-press.com/unload-alert-in-wordpress/
こちらの記事を参考に、WordPressのプラグインContactform7をカスタマイズしたお問い合わせフォームに、ページ離脱のアラートを問い合わせページにのみ動作するように作業中です。

記事ではプラグインを入れていましたが、コンタクトフォームのテキスト内に<script>を書いて作業をしています。

「ページ離脱アラートを表示するには」の章の

jQuery(function(){ jQuery(window).on('beforeunload', function(){ return ""; }); });

こちらを入れた際には思った通り動くのですが、
「入力途中の離脱でアラートを表示するには」の章の

jQuery(function(){ var isChanged = false; jQuery(window).on('beforeunload', function(){ if(isChanged){ return ""; } }); jQuery("form input, form textarea, form select").change(function(){ isChanged = true; }); jQuery("button[type=submit]").on("click", function(){ isChanged = false; }); });

これに置き換えてしまうと動作しなくなってしまいます。
原因として何が考えられるでしょうか??

添付画像にあるように、実装しているコードにはformタグやbuttonタグがないためここを置き換える必要がある気がするのですが、適切な置き換え方法がわからず苦戦しています。

すでに回答いただいた2名の方の方法も試したのですが解決せず、どなたかご教示いただけないでしょうか。
WordPressもjQueryもあまり詳しくないため解決できないでいます。
初心者の質問で恐縮ですが、何卒宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

wordpressのコンタクトフォームテキスト欄で無駄に改行していたことが原因でした><
お騒がせしてすみませんでした!

投稿2020/03/24 08:00

yujill

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

js

1jQuery("form input, form textarea, form select").change(function(){ 2 isChanged = true; 3});

の中身が本当に走ってるのか確認した方がいいでしょうね

ajaxでフォームを表示してるとかのタイプのコンタクトフォームだと
jQuery(function($){...});が走った時点ではformが存在せずに
イベントリスナー登録に失敗しているでしょうし

その辺りが原因であればまあ

js

1jQuery("body").on("change","form input, form textarea, form select",function(){ 2  isChanged = true; 3}); 4

とかでいけますかね

投稿2020/03/23 11:14

KazuhiroHatano

総合スコア7819

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yujill

2020/03/23 12:06

回答ありがとうございます>< いただいたコードで置き換えてみましたが、残念ながら動きませんでした。 でも確かに、この辺りが怪しい気がしてきました。 コンタクトフォームはプラグインのContactForm7を使ってカスタマイズしているので、HTMLソースを見たらそもそもformタグがありませんでした。 そのため以下のように修正してみたのですが、やはりダメでした^^; jQuery("body").on("change","input, textarea",function(){   isChanged = true; }); 他に試し見るべきことありましたらご教示いただけますと幸いです。 何卒宜しくお願いします。
guest

0

returnさせるものが逆だからです。

javascript

1jQuery(window).on('beforeunload', function(){ 2 if(!isChanged) { 3 return ""; 4 } 5}); 6 7// それか 8jQuery(window).on('beforeunload', function(){ 9 return isChanged; 10});

return false;をさせると、離脱ブロッックになるということです。
return "";と、return false;return;は、ほぼ同じことをすることになります。
return true;か、そもそもreturnを書かないと、そのまま離脱許可になります。

投稿2020/03/23 10:33

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yujill

2020/03/23 10:46

回答ありがとうございます>< 質問に記載のコード2番目の3行目から5行目を、いただいた2パターンで置き換えて試しましたがやはり動作しませんでした・・・。 教えていただいた箇所以外に書き換えるところはありますでしょうか? WP初心者なので基本的すぎるミスをしていたらすみません。
yujill

2020/03/23 10:47

✖️3行目から5行目 ○ 3行目から7行目
miyabi_takatsuk

2020/03/23 10:51

なるほど・・・。 WordPressではなく、JavaScriptですね。 今回の質問だと。 そもそも、 'beforeunload'とかに代表される、ブラウザのデフォルトの機能を妨害しかねない仕様は推奨されていないので、 (つまり、やれる方法がそもそも無かったり、難しかったりするということ) 離脱の注意をしっかり目立つように記載するか、 離脱されても、後処理が可能な仕様にした方がいいかもしれません・・・。
miyabi_takatsuk

2020/03/23 10:53

もうちょっとこちらでも検証してみますね。
yujill

2020/03/23 12:07

お手数をおかけしてすみません。 こちらももう少し色々試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問