登録フォームを飛ばして確認フォームからスタートする処理を組んでいたが、ブラウザback、もしくは「戻る」ボタンで history.back() 実行をやると、ブラウザのフォーム入力中警告が出る問題が発生。
入力せずに予めこちらで設定したデータを既存のフォームの確認ページに表示させるというやり方をしているので、文言の変更はしないし、実際には入力中じゃない。
にも関わらず、「移動しますか?」と警告ダイアログを表示してくれやがりますので、ちょいとgoogle検索すると、beforeunload というイベントに介入すれば良いのが分かった。
1 2 3 4 5 6 7 8 9 |
<script type="text/javascript"> $(function(){ // 入力中のページ移動アラート解除 $(window).on('beforeunload',function(e){ e.preventDefault(); }) $(window).off('beforeunload'); }) </script> |
理屈上は、e.preventDefault() のみや、$(window).off(…)のみで良さそうに思えるのだが、どちらも必須。
この辺の理不尽な仕様は、javascript に苦しめられてきた者なら分かるかもしれないけど、google検索しても出てこなかったので、経験を積んでないと難しいかもしれないなあ。