使用jQuery检测新的按钮和文本框

时间:2014-07-14 14:37:03

标签: jquery clear document-ready

我正在尝试为未保存的数据创建导航警告,但我遇到了麻烦,因为我要检查的页面会清除单选按钮。页面清除它们的方式是删除单选按钮并添加新按钮。我不知道如何使用jQuery检测它。我已经有一些代码可以检测文本框中的更改,它会检测单选按钮是否已更改状态,但在清除时它不起作用。这是我的jQuery:

var warnMessage = "You have unsaved changes on this page!";

$(document).ready(function() {

$('input:not(:button,:submit),textarea,select,:disabled').change(function () {
    window.onbeforeunload = function () {
        if (warnMessage != null) return warnMessage;
    }
});

  $('input:submit').click(function(e) {
      warnMessage = null;
  });

});

有没有办法检测页面中是否使用了document.add?

1 个答案:

答案 0 :(得分:0)

您应该以这种方式使用.on()函数(http://api.jquery.com/on/):

var warnMessage = "You have unsaved changes on this page!";

$(document).ready(function() {

    $(document).on('change', 'input:not(:button,:submit),textarea,select,:disabled', function () {
        window.onbeforeunload = function () {
            if (warnMessage != null) return warnMessage;
        }
    });

    $(document).on('click', 'input:submit', function(e) {
        warnMessage = null;
    });
});

请注意以下事项:

  1. 您需要使用$选择包含要检测更改/单击的元素的父元素(f.i.整个文档)。只有在.on函数内,您才能指定这些元素。
  2. 函数.on()仅在jQuery> = 1.7中可用:如果您的版本较低(但大于1.3),则应使用.live()函数(http://api.jquery.com/live/)。