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

Javascript 使用jQuery,如何查找表单是否已更改?,javascript,jquery,Javascript,Jquery,我想知道表格是否有变化。表单可以包含任何表单元素,如输入、选择、文本区域等。基本上,我希望有一种方式向用户显示他们对表单所做的未保存更改 如何使用jQuery实现这一点 澄清一下:我想捕捉对表单的任何更改,不仅是对输入元素的更改,还包括对所有其他表单元素的更改,如textarea、select等。在这种情况下,我通常采用的方法是检查序列化表单值。所以,我们的想法是使用方法计算初始形式状态。然后,在需要时,只需将当前状态与原始序列化字符串进行比较 要将表单中的所有输入元素(选择、文本区域、复选框、

我想知道表格是否有变化。表单可以包含任何表单元素,如输入、选择、文本区域等。基本上,我希望有一种方式向用户显示他们对表单所做的未保存更改

如何使用jQuery实现这一点


澄清一下:我想捕捉对表单的任何更改,不仅是对输入元素的更改,还包括对所有其他表单元素的更改,如textarea、select等。

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

要将表单中的所有输入元素(选择、文本区域、复选框、输入文本等)作为目标,可以使用伪选择器
:input

例如:

var$form=$('form'),
origForm=$form.serialize();
$('form:input')。在('change input',function()上{
$('.change message').toggle($form.serialize()!==origForm);
});
。更改消息{
显示:无;
}

您有未保存的更改。
用户名:
类型:
选择1
选择2
选择3
现状:1
2.

您想什么时候显示/检查?@dfsq,如果表单被修改,用户单击“关闭”选项卡或转到其他页面,提醒他请保存您所做的更改。请参阅下面的帖子请停止垃圾邮件伟大的答案。但是Quesiton,为什么没有序列化就不能工作?我的意思是,有没有一种不序列化的方法可以做到这一点?您需要一种方法来比较所有表单元素值。我刚刚发现序列化是一种非常方便的方法。这只是一行代码。这个字符串只依赖于输入值,这正是我们需要的。当用户恢复更改时,它也能正常工作。序列化的字符串也会恢复到其原始值。效果很好。谢谢。这是一个很好的解决方案!一个比这里更好的解决方案:在使用数据属性的地方,因为这样的解决方案是单向的,一旦输入更改,表单将始终声明为已更改,而此解决方案是双向的。如果用户输入,然后删除他输入的内容,则表单不会声明为已更改,因为序列化匹配。:)不是吗?这很有效!我有一个问题,我有一个工具,它生成了一个随机密码,并将其插入密码字段,但没有注册为更改。。。因此,在更新密码字段的值后,我必须调用.change()(或者您可以调用.trigger('change')),这非常有效!