如何处理jQuery中的表单更改?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

在jQuery中,是否有一种简单的方法来测试表单的任何元素是否已经更改?

假设我有一张表格,我有一个按钮,上面有以下内容:

$('#mybutton').click(function() {
  // Here is where is need to test
  if(/* FORM has changed */) {
     // Do something
  }
});

如何测试表单加载后是否发生了更改?

提问于
用户回答回答于

你可以这样做:

$("form :input").change(function() {
  $(this).closest('form').data('changed', true);
});
$('#mybutton').click(function() {
  if($(this).closest('form').data('changed')) {
     //do something
  }
});

一个change事件处理程序的形式输入,如果其中任何变更使用.data()设定changedtrue,那么我们就检查在点击该值,这个假设#mybutton的形式里(如果不只是更换$(this).closest('form')$('#myForm'))但你可以使它更通用,如下所示:

$('.checkChangedbutton').click(function() {
  if($(this).closest('form').data('changed')) {
     //do something
  }
});
用户回答回答于

如果要检查表单数据(将被发送到服务器时)是否已更改,可以在页面加载时序列化表单数据,并将其与当前表单数据进行比较:

$(function() {

    var form_original_data = $("#myform").serialize(); 

    $("#mybutton").click(function() {
        if ($("#myform").serialize() != form_original_data) {
            // Something changed
        }
    });

});

扫码关注云+社区

领取腾讯云代金券