画面離脱時のモーダル表示の実装を行なっています。
jsで以下のように実装しました。
JavaScript
1<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 2<script> 3$(function(){ 4 $("input[type=text]").change(function() { 5 $(window).on('beforeunload', function() { 6 return '投稿が完了していません。このまま移動しますか?'; 7 }); 8 }); 9 $("input[type=submit]").click(function() { 10 $(window).off('beforeunload'); 11 }); 12}); 13</script> 14<form method="post" action="foo.cgi"> 15<input type="text" value="" /> 16<input type="submit" value="送信" /> 17</form>
submit時にはモーダルを表示しないようにoffメソッドでイベントハンドラを取り除いています。
しかしここで問題があります。
質問としては、
submitボタン押下時に
・バリデーションエラー
・モーダルのこのページにとどまる押下
をされた場合、どのようにoffしないようにすればいいでしょうか?あるいは、再設定すればいいでしょうか?
というのも、offで一度イベントハンドラを削除されるので、次にページ遷移したときにモーダルが表示されません。
「画面遷移する寸前にイベントハンドラ削除」みたいなことをしようと思い、pagehideイベントを使おうとしましたが、
そのイベントは発生しませんでした。
windowにpagehideをonした形です。
こういう時の対応方法がわかる方がいればよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/07 09:40 編集
2018/03/07 09:52
2018/03/07 10:13
2018/03/07 18:36
2018/03/07 18:43
2018/03/08 01:39
2018/03/09 20:49