奇怪的表单重置事件行为

3

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

reset事件的回调函数中,我检查输入值,但它不会立即更新,必须等待下一个时刻,例如使用setTimeout(callback, 0)或阻止默认行为并手动触发事件el.reset()

这里是jsbin示例,这样你就可以看到我在说什么——当你向输入框中插入一些值并单击重置按钮后,不应向div元素添加任何内容。

我在Chrome和Firefox上都遇到了同样的问题。

  • 这是实现中的错误还是预期行为?
  • 如果是后者——为什么?
  • 除了使用setTimeout或阻止默认行为并手动触发事件之外,是否有更好的解决方法?

为什么不直接删除 div 元素呢?这样它就不会按照你所描述的方式运作了。在第一次打勾时,表单会重置。**Fiddle** - Millhorn
它已经重置,但在回调函数内检查输入值时,它仍然存在。 - methyl
2个回答

2
重置事件在重置之前被调用,而不是之后,这样您就有机会取消重置,如果需要的话。
这个SO问题说,唯一在重置后执行某些操作的方法是在超时时调用函数: Call a function after form reset

这很有道理,但我更喜欢我的方法,即通过防止事件并手动触发它来代替setTimeout。 :) - methyl

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接