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

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

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

我想知道如何编写一个通用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()) {
   // ...
}

Html相关问答推荐

如何正确使用counter()、counter—increment()和counter—reset()嵌套标题?

网格容器中的定心元件

Tailwincss:自动设置网格高度

Angular 分量被循环

为什么前端框架可以创建自定义属性,而我却被期望在挖掘之前添加数据

使自定义图像滑块全宽

Tailwind CSS 忽略我的元素的填充

在 html 和 css 中绘制表格内的倾斜线

如何从 div 内的属性中提取 href 和文本

带标签 css 的 div 内的中心图标

对齐列表项内的文本,使其不在元素装饰下

使单行路径的 svg 填充父级的 100% 宽度

如何使用 CSS 应用带有笔划的文本阴影?

我正在使用 NVDA 并多次读取关闭按钮,但它的读取非常完美

在带有换行文本的工具提示中显示溢出文本

pull-right 不适用于 bootstrap alert 内的按钮

Cargo 在网格中的排列

让 Iframe 覆盖整个页面

本地 css 样式表未链接

Bootstrap 5 网格问题,div 向下转义