当前位置:  开发笔记 > 编程语言 > 正文

通过javascript跟踪表单中的更改的最佳方法是什么?

如何解决《通过javascript跟踪表单中的更改的最佳方法是什么?》经验,为你挑选了3个好方法。

我想通过javascript跟踪表单中输入的变化.我的意图是(但不限于)

只有在某些内容发生变化时才启用"保存"按钮

如果用户想要关闭页面并且未保存某些内容则发出警报

想法?



1> nickf..:

循环遍历所有输入元素,并onchange在每个元素上放置一个处理程序.当它触发时,设置一个标志,让您知道表单已更改.它的基本版本很容易设置,但是如果有人将输入从"a"更改为"b"然后再返回"a",则不足以识别.如果抓住那个案件很重要,那么它仍然是可能的,但需要更多的工作.

这是jQuery中的一个基本示例:

$("#myForm")
    .on("input", function() {
        // do whatever you need to do when something's changed.
        // perhaps set up an onExit function on the window
        $('#saveButton').show();
    })
;


您可以在循环中使用闭包来存储输入字段的值,然后您可以测试输入是否更改回值.你必须为单选按钮,复选框和提交按钮做一些特殊情况.哦,不要忘记在这种情况下删除unbink!
@nickf这是表单中最后一个字段的问题.用户将填写该字段,并想知道为什么提交按钮仍然看起来已禁用:(不明显他们必须单击某处 - 或 - 选项卡才能继续,直到他们实际点击 - 某处 - 或 - 选项卡.糟糕的UX设计.
您可以使用`input`事件,与8年前相比,它具有更好的浏览器支持.https://developer.mozilla.org/en-US/docs/Web/Events/input触发对字段的每次更改,包括键入,删除,粘贴等.

2> Dylan Beatti..:

JS中的文本表单元素公开了.value属性和.defaultValue属性,因此您可以轻松实现以下内容:

function formChanged(form) {
  for (var i = 0; i < form.elements.length; i++) {
      if(form.elements[i].value != form.elements[i].defaultValue) return(true);
  }
  return(false);
}

对于复选框和单选按钮,查看是否element.checked != element.defaultChecked,以及对于HTML

mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有