判断一个表单是否被修改过,在不少地方需要用到。例如,用户打开一个订单编辑页,过一会后,他要关闭页面,如果用户有修改,那最好能提示下他“请问您确定要离开本页吗?确认离开当前页面吗?/n未保存的数据将会丢失!/n请按“确定”以继续,或者按“取消”回到当前页。”如果用户没有修改,则不用提醒。QWrap里提供了一个判断form是否已有改变的方法,代码如下:View Code /** * 判断form的内容是否有改变 * @method isFormChanged * @param {element} el form对象 * @param {string} filter (Optional) 过滤函数,会被循环调用传递给item作参数要求返回布尔值判断是否过滤 * @return {bool} 是否改变 */ var isFormChanged= function (el, filter) { el = g(el); filter = filter || function (el) { return false; }; var els = el.elements, l = els.length, i = 0, j = 0, el, opts; for (; i < l ; ++ i, j = 0) { el = els[i]; switch (el.type) { case "text": case "hidden": case "password": case "textarea": if (filter(el)) break; if (el.defaultValue != el.value) return true; break; case "radio": case "checkbox": if (filter(el)) break; if (el.defaultChecked != el.checked) return true; break; case "select-one": j = 1; case "select-multiple": if (filter(el)) break; opts = el.options; for (; j < opts.length ; ++ j) { if (opts[j].defaultSelected != opts[j].selected) return true; } break; } } return false; };它的第一个参数是form对象。返回值是这个表单是否与load页面时的值的状态是否有变更。第二个参数是:是为了应对“某些元素值就算是变了,也当作未变”的需求。