首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检测html表单是否被编辑的通用方法

检测html表单是否被编辑的通用方法
EN

Stack Overflow用户
提问于 2009-06-06 13:28:14
回答 7查看 104.3K关注 0票数 107

我有一个选项卡式html表单。在从一个选项卡导航到另一个选项卡时,即使数据没有更改,当前选项卡的数据也会持久化(在DB上)。

我只想在表单被编辑的情况下进行持久性调用。窗体可以包含任何类型的控件。不需要通过键入一些文本来弄脏表单,但在日历控件中选择日期也是合格的。

要实现这一点,一种方法是在默认情况下以只读模式显示表单,并具有一个“编辑”按钮,如果用户单击“编辑”按钮,则调用数据库(再次,无论数据是否被修改。这是对现有的更好的改进)。

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-06 13:32:44

在纯javascript中,这不是一项简单的任务,但jQuery让它变得非常容易:

代码语言:javascript
复制
$("#myform :input").change(function() {
   $("#myform").data("changed",true);
});

然后在保存之前,您可以检查它是否发生了更改:

代码语言:javascript
复制
if ($("#myform").data("changed")) {
   // submit the form
}

在上面的例子中,表单的id等于"myform“。

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

代码语言:javascript
复制
$.fn.extend({
 trackChanges: function() {
   $(":input",this).change(function() {
      $(this.form).data("changed", true);
   });
 }
 ,
 isChanged: function() { 
   return this.data("changed"); 
 }
});

然后你可以简单地说:

代码语言:javascript
复制
$("#myform").trackChanges();

并检查表单是否已更改:

代码语言:javascript
复制
if ($("#myform").isChanged()) {
   // ...
}
票数 181
EN

Stack Overflow用户

发布于 2009-06-06 13:43:21

以防JQuery是不可能的。在谷歌上快速搜索一下,就发现了MD5和SHA1散列算法的Javascript实现。如果需要,您可以连接所有表单输入并对其进行散列,然后将该值存储在内存中。当用户完成时。将所有值连接起来,然后再次进行散列。比较两个哈希。如果它们相同,则用户未更改任何表单域。如果它们不同,则说明某些内容已被编辑,您需要调用持久性代码。

票数 41
EN

Stack Overflow用户

发布于 2016-06-30 22:07:07

我不确定我是否正确地回答了您的问题,但是addEventListener呢?如果你不太关心IE8支持,这应该没问题。以下代码适用于我:

代码语言:javascript
复制
var form = document.getElementById("myForm");

form.addEventListener("input", function () {
    console.log("Form has changed!");
});
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/959670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档