我知道form.reset()
会将所有表单字段重置为其默认值,但这是如何工作的呢?
是浏览器的DOM实现吗?即浏览器知道上次回发/获取中从服务器发送的最后一个值是什么以及何时reset()
称为浏览器重置这些值。
DOM 规范tells us它:
...执行与重置按钮相同的操作。
依此类推,转向 HTML。根据最新规格(仍然是草稿!):
当表单元素表单被重置时,用户代理必须在表单上触发一个名为重置的简单事件,该事件是可取消的,然后,如果该事件未取消,则必须调用表单所有者为表单的每个可重置元素的重置算法,并从表单广播 formchange 事件。
每个可重置元素定义其自己的重置算法。作为这些算法的一部分对表单控件所做的更改不计为用户引起的更改(因此,例如,不会导致输入事件触发)。
And the “重置算法”为input元素(例如)是:
...要将脏值标志和脏检查标志设置回 false,请将元素的值设置为 value 内容属性的值(如果有的话),否则设置为空字符串,将元素的检查状态设置为如果元素具有已检查的内容属性,则为 true;如果没有,则为 false,清空选定文件的列表,然后调用值清理算法(如果类型属性的当前状态定义了该算法)。
所以基本上,reset
将输入值设置为其“值”的当前值属性 (theElement.getAttribute("value")
),可能与当前的不同value
property (theElement.value
). 活生生的例子在这里。
Edit:哦,佩卡给我们指了指defaultValue。非常酷,我宁愿使用它而不是getAttribute("value")
. 修改后的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)