离开页面前的对话动作

时间:2018-10-29 02:53:47

标签: javascript jquery web

我找到了很多解决方案,但没有一个能真正解决我的问题。如果用户决定不保存更改就离开,我必须在页面上执行某些操作(如果他真的要不保存就离开,或者让他保存,以及进行一些簿记,请咨询他)。 大多数答案都提到了onbeforeunload事件。

类似

$(window).on('beforeunload ',function() {
    return 'Are you sure ?';
});

但这并不是我真正需要的。首先,它不允许我按照用户要求进行对话框。对我来说,理想的方法是使用jQuery.UI模态对话框或类似的对话框,并带有自定义消息和两个清除按钮:“不保存就离开页面”和“保存并离开” 另外,这只能控制我是否可以离开该页面,但是我需要执行其他操作(例如,在某些页面中,允许用户静默保存信息并离开...请不要问我,业务分析师认为) 因此,可以执行类似此伪代码的事情吗?

  
$(window).on('some event when I leave the page ',
  function() { 
    destiny = DetectDestinyPage();
    if (destiny in list of PagesToAsk and FormHasNotSavedInfo()){
        answer = modalDialogAskingTheClientIfHeWantToSave()
        if(answer == "yes"){
            ajaxCallToServerToSave()
        }
    }
    GoToDestiny(destiny)
  }
}

2 个答案:

答案 0 :(得分:3)

希望这对您有帮助

jQuery(window).bind('beforeunload',function(){
              var Ans = confirm("Are you sure you leave this page!");
               if(Ans==true){
                  return true;
              }else{
                  return false;
               }
 });

答案 1 :(得分:-1)

您应该得到用户的确认是否正确; 您可以这样:

  
$(window).on('some event when I leave the page ',
  function() { 
    let  r=confirm("Are sure to leave?")  // if user click 'yes', r=true, else r=false
    if(r){
      // your code  
    }
  }
}