除非单击“保存”按钮,否则卸载时将显示jQuery警报

时间:2013-04-23 08:30:37

标签: javascript jquery bbcode

我有一个文本框,我希望它在离开页面时显示未提交更改的提醒,除非您单击提交按钮。 这很好用,除非它按下提交按钮时仍会提醒你,我真的不知道如何修复它。

我有2个文件,我的Set.js用于执行BBcode的操作,以及我的script.js

的script.js

$(document).ready(function() {
    var saveClicked = false;

    $(window).bind('beforeunload', function() {
        if(y != $("#markItUp").val()) {
            if(!saveClicked) {          
                return 'You have unsaved changes!';
            }
        }
    });
});

Set.js

{
    name: 'Save',
    className:"miu-save",
    call: function() {
        $('form#edit').submit(); 
        saveClicked = true;
    }
},

3 个答案:

答案 0 :(得分:2)

更改此

{
    name: 'Save',
    className:"miu-save",
    call: function() {
        $('form#edit').submit(); 
        saveClicked = true;
    }
},

{
    name: 'Save',
    className:"miu-save",
    call: function() {
        saveClicked = true; // true is called first here if you notice and then submit
        $('form#edit').submit(); 
    }
},

并且这也是必要的

var saveClicked = false;
$(document).ready(function(){

在document.ready函数

之外声明saveClicked var

答案 1 :(得分:1)

saveClicked放在document.ready之外。这样它将是全局的,然后只有一个可以将其值设置为truefalse

所以你的脚本应该是:

  var saveClicked = false;
  $(document).ready(function(){

$(window).bind('beforeunload', function(){
   if(y != $("#markItUp").val()){
     if(!saveClicked){           
   return 'You have unsaved changes!';
  }}
 });
});

答案 2 :(得分:0)

我不确定这会起作用,但也许你可以先做

saveClicked = true;

只有执行

$('form#edit').submit();

可以做到这一点。