6

ユーザーが保存されていない設定を含むページを離れようとした場合に警告を表示したいのですが、それらの設定を保存しようとしている場合は明らかにそうではありません。

以下はうまくいくはずだと思っていたので、私の理解は間違っていると思いますが、うまくいきません。誰かが私が間違っていることを教えてもらえますか? ありがとう。

$('input[name="Submit"]').off('onbeforeunload');

window.onbeforeunload = function closeEditorWarning(){

    /** Check to see if the settings warning is displayed */
    if($('#unsaved-settings').css('display') !== 'none'){
        bol_option_changed = true;
    }

    /** Display a warning if the user is trying to leave the page with unsaved settings */
    if(bol_option_changed === true){
        return '';
    }


};
4

4 に答える 4

15

jquery .on() を使用して onbeforeunload を設定し、フォーム送信で .off() を使用できます

// Warning
$(window).on('beforeunload', function(){
    return "Any changes will be lost";
});

// Form Submit
$(document).on("submit", "form", function(event){
    // disable unload warning
    $(window).off('beforeunload');
});
于 2014-08-26T16:59:45.440 に答える
5

これを試すことができます:送信ボタンがクリックされたときにフラグを設定し、このフラグを使用して、ユーザーが送信をクリックしたか、途中でページを離れたかを確認します

擬似コード:

var submit_clicked = false;

$('input[type="submit"]').click(function(){
    submit_clicked = true;
});


window.onbeforeunload = function closeEditorWarning () {

  /** Check to see if the settings warning is displayed */
  if(($('#unsaved-settings').css('display') !== 'none') && 
      submit_clicked === false) {
    bol_option_changed = true;
  }

  /** Display a warning if the user is trying to leave the page with unsaved settings */
  if(bol_option_changed === true){
    return '';
  }


};
于 2013-01-15T15:59:41.167 に答える