使用jQuery,如何找到表单是否已更改?

我想知道表格是否发生了变化。 表单可以包含任何表单元素,例如input,select,textarea等。基本上我想要一种向用户显示他们对表单进行了未保存更改的方法。

我怎么能用jQuery做到这一点?

澄清一下:我想抓住对表单的任何更改,不仅要输入元素,还要注意所有其他表单元素,textarea,select等。

我通常在这种情况下采用的方法是检查序列化的表单值。 因此,我们的想法是使用$.fn.serialize方法计算初始表单状态。 然后在需要时,您只需将当前状态与原始序列化字符串进行比较。

要在表单中定位所有输入元素(选择,文本区域,复选框,输入文本等),您可以使用伪选择器:input

例如:

 var $form = $('form'), origForm = $form.serialize(); $('form :input').on('change input', function() { $('.change-message').toggle($form.serialize() !== origForm); }); 
 .change-message { display: none; } 
  
You have unsaved changes.
Username:
Type:
Status: 1 2