奇怪的表单重置事件行为

时间:2014-07-09 14:20:34

标签: javascript html

在收听表单reset事件时遇到了奇怪的问题。

reset事件的内部回调我检查输入值,并且它没有立即更新,我必须等到下一个勾选,例如使用setTimeout(callback, 0)或使用{{手动阻止默认和触发事件1}}

这是jsbin example所以你可以看到我在说什么 - 在输入一些值并点击重置按钮后,不应该将任何内容添加到el.reset()元素。

我可以在Chrome和Firefox上看到同样的问题。

  • 这是实施或预期行为中的错误吗?
  • 如果是后者 - 为什么?
  • 有没有比使用setTimeout或手动阻止默认和触发事件更好的解决方法?

2 个答案:

答案 0 :(得分:2)

重置事件在重置之前而不是之后调用,以便在需要时取消重置。

这个问题说,重置后做的事情的唯一方法就是在超时时调用一个函数:Call a function after form reset

答案 1 :(得分:1)

似乎黑客攻击此问题可能会覆盖onreset属性。

无保证在其他浏览器中有效。

form.onreset=function(){
  var b = input.value;
  logger.innerHTML += b + "<br/>"; 
};

请在此处找到示例我已准备好http://jsbin.com/muzahuye/20/edit?html,js,output

在firefox上工作正常,至少28

https://browserling.com/queue?uri=http%3A%2F%2Fjsbin.com%2Fmuzahuye%2F20%2F%3Foutput&browser=firefox&version=nightly