EFO対策として、重要なフォームでは、
ブラウザの「戻る・閉じる・再読み込み」が押された時にアラートを出し、
離脱率を減らすという施策が行われる。
[参考] フォームの2大誤操作「閉じる・戻る」での離脱を減らす確認ダイアログを実装しよう/15か条の10
[コード要点]
・ブラウザでの「閉じる、戻る、再読み込み」があったときにアラート発生
・指定の要素に入力がない場合、アラートを発生させない。
・指定の要素へは、アラートを発生させない。
$(window).ready ->
# [どの要素で入力されていたらアラート発生させるか指定]
# (input要素、textarea要素、select要素が変更された場合)の値が変更された場合
# ブラウザの戻るや更新ボタン、タブを閉じるときに
# 警告をだすようにする
$('input, textarea, select').on 'keyup change', ->
$(window).on 'beforeunload', ->
true
# [アラート発生させない要素を指定]
# 送信ボタンなどの通常の方法で画面遷移した場合は、
# 通常通りアラートは表示されずに遷移する
$('a, input[type=submit]').on 'click', ->
$(window).off 'beforeunload'