我想通过javascript跟踪表单中输入的变化.我的意图是(但不限于)
只有在某些内容发生变化时才启用"保存"按钮
如果用户想要关闭页面并且未保存某些内容则发出警报
想法?
循环遍历所有输入元素,并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(); }) ;
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 元素,您需要循环遍历
select.options
数组并检查每个选项是否selected == defaultSelected
.
您可能希望使用类似jQuery的框架来将处理程序附加到onchange
每个单独表单元素的事件.这些处理程序可以调用您的formChanged()
代码并修改enabled
"保存"按钮的属性,和/或附加/分离文档正文beforeunload
事件的事件处理程序.
尝试
function isModifiedForm(form){ var __clone = $(form).clone(); __clone[0].reset(); return $(form).serialize() == $(__clone).serialize(); }
希望它的帮助))