0

この jquery コードを使用して、ユーザーがオンライン アプリケーションを完了する前に移動しないように警告しています。メニュー/リスト フィールドにいるときに戻るボタンを押して (それがナビゲーション ショートカットであることを知らずに)、アプリケーションに入力したすべてのデータを失うユーザーがたくさんいます。問題は、送信ボタンを押したときに警告が表示されないようにする方法がわからないことです。

このサイトで他の同様の投稿をいくつか見ましたが、それらを機能させることもできません。実際、ほとんどの場合、ポップアップを機能させることさえできませんでした。私はjqueryにあまり慣れていないので、おそらく私が見逃しているのは単純なものです。(実際にここで取り組んでいた別のソリューションがあります: http://www.citizensmemorial.com/careers/online-app.html

<script> function setConfirmUnload(on) {

     window.onbeforeunload = (on) ? unloadMessage : null;

}

function unloadMessage() {

     return 'You have started filling out this application.' +
        ' If you navigate away from this page without' +           
        ' first saving your data, the changes will be' +
        ' lost.';

}</script>
<script>
$(document).ready(function() { 

     $(':input',document.form1).bind(
         "change", function() { 
              setConfirmUnload(true);
         }
      ); // Prevent accidental navigation away

});
</script>
4

1 に答える 1

0

setConfirmUnload確認を設定するときに何かを解析する必要がないように、検証を取り消しました。

function setConfirmUnload(disable) {
     window.onbeforeunload = disable ? null : unloadMessage;
}

function unloadMessage() {
    return 'You have started filling out this application.' +
        ' If you navigate away from this page without' +           
        ' first saving your data, the changes will be' +
        ' lost.';
}
setConfirmUnload();
jQuery(function($) { // <-- Dom is ready (same as $(document).ready(function($) {)
    $("form").on("submit", setConfirmUnload);
});

setConfirmUnloadそして、フォーム送信ハンドラーにバインドしました。呼び出しの最初の引数は、jQueryEvent Objectテスト時に true と検証されます。

ここで簡単なデモを試すことができます


入力に何かが入力されたときに最初に unload-handler をアクティブにしたい場合は、次を使用できます。

var $inputs = $("form :input").on("change", function() {
    setConfirmUnload();
    $inputs.off("change"); // <-- remove the event form all elements.
});
于 2013-03-13T11:47:48.820 に答える