奇怪的表单重置事件行为

Weird form reset event behavior

本文关键字:事件 表单      更新时间:2023-09-26

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

reset事件的回调中,我检查输入值,并且它不会立即更新,我必须等到下一个刻度,例如setTimeout(callback, 0)或用el.reset()手动防止默认和触发事件

这是一个jsbin的例子,所以你可以看到我在说什么-在你插入一些值到输入并单击重置按钮后,不应该将任何内容添加到div元素。

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

  • 这是一个bug在实现或预期的行为?
  • 如果是后者——为什么?
  • 是否有更好的方法来解决它比做setTimeout或防止默认和触发事件手动?

重置事件在重置之前而不是之后被调用,以便在需要时给您一个取消重置的机会。

这个SO问题说,在重置后做某事的唯一方法是在超时时调用函数:在表单重置后调用函数

似乎解决这个问题的方法可能是重写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&浏览器= firefox&每晚version =