检测HTML表单是否被编辑的通用方法是什么?

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

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

我有一个标签的HTML表单。在从一个选项卡导航到另一个选项卡时,即使没有数据更改,当前选项卡的数据也会保留(在数据库上)。

我只想在编辑表单时进行持久性调用。该表单可以包含任何类型的控件。调用表单不一定要通过输入一些文本,但在日历控件中选择一个日期也是合格的。

实现此目的的一种方法是默认情况下以只读模式显示表单并具有“编辑”按钮,并且如果用户单击编辑按钮,则对DB进行调用(再一次,不管数据是否被修改。这是对现有的更好的改进)。

我想知道如何编写一个通用的JavaScript函数来检查是否有任何控件值已被修改?

提问于
用户回答回答于

在纯JavaScript中,这不是一件容易的事,但jQuery使它很容易做到:

$("#myform :input").change(function() {
   $("#myform").data("changed",true);
});

然后在保存之前,可以检查它是否已更改:

if ($("#myform").data("changed")) {
   // submit the form
}

在上面的例子中,表单的ID等于“myform”。

如果你需要多种形式,你可以很容易地把它变成一个插件:

$.fn.extend({
 trackChanges: function() {
   $(":input",this).change(function() {
      $(this.form).data("changed", true);
   });
 }
 ,
 isChanged: function() { 
   return this.data("changed"); 
 }
});

那么你可以简单地说:

$("#myform").trackChanges();

并检查表单是否发生了变化:

if ($("#myform").isChanged()) {
   // ...
}
用户回答回答于

如果JQuery不可能的话。Google上的快速搜索发现了MD5和SHA1哈希算法的Javascript实现。如果想要,可以连接所有的表单输入并对它们进行散列,然后将该值存储在内存中。当用户完成时。连接所有值并再次散列。比较2个哈希。如果它们相同,则用户不会更改任何表单域。如果它们不同,则编辑了一些内容,并且需要调用持久性代码。

扫码关注云+社区

领取腾讯云代金券