0

我有一个 jquery 确认(“您确定要在保存前离开吗?”),当文本框或文本区域已更改时,它将“isModified”设置为 true。现在的问题是,当我按下按钮(保存..)时,确认显示。

有没有办法让它在按下按钮时跳过确认?

// Confirm leaving page
var isModified = false;
var modifiedMsg = 'Are you sure?';

$('textarea,input').change(function(){
    if(!isModified){
        isModified = true;
      }
  });        

window.onbeforeunload = function(){
    if(isModified){
        return modifiedMsg;
     }
  };  
4

3 回答 3

1

实际上,如果您的按钮也是input type="submit",它将有资格进入选择器。您可以通过使用带有属性的选择器来指定

$('textarea,input[type=text]')

或使用不过滤input[type=submit]

于 2012-04-27T05:46:55.043 回答
1

试试这个

$('textarea,input[type!="submit"],input[type!="button"]')
于 2012-04-27T05:49:48.477 回答
1

看起来您正在尝试进行脏检查。您可能需要进行以下更改:

而不是试图捕捉按下了哪些按钮,您真正关心的是(我假设)是您提交表单的时间?

$('form').submit(function(e) {
   isFormSubmitting = true;
});

然后在你的脏检查上,确保两者都进行了相应的设置。只使用一个标志是危险的,因为提交表单可以消除脏状态。

$(window).unload(function(e) {
    if(isModified && !isFormSubmitting){
        return modifiedMsg;
     }
});
于 2012-04-27T06:21:35.013 回答