JQuery - 除了按钮+提交之外的所有内容

时间:2012-04-27 05:42:15

标签: jquery jquery-selectors

我有一个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;
     }
  };  

3 个答案:

答案 0 :(得分:1)

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

来使用

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

或不使用input[type=submit]

过滤

答案 1 :(得分:1)

试试这个

$('textarea,input[type!="submit"],input[type!="button"]')

答案 2 :(得分:1)

看起来你正在尝试进行脏检查。您可能想要进行这些更改:

而不是试图捕捉哪些按钮被按下,你真正关心的(我假设)是,当你提交表格时?

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

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

$(window).unload(function(e) {
    if(isModified && !isFormSubmitting){
        return modifiedMsg;
     }
});