可以在此处测试和更改相关设置:http: //jsfiddle.net/5hAQ8/9/
我有一个小表格(基本上只是一个带有清除按钮的输入字段)。JavaScript 很简单,只是说明了问题。基本上它是输入(keyup)、按钮(点击/点击)和表单(提交)的三个侦听器。HTML 非常简单:
<form>
<input>
<button>X</button>
</form>
X 旨在清除该字段,但这不是重点。当有人按下[enter]
时,即使输入是焦点,按钮也会被触发。您可以在上面链接的 jsfiddle 中自己进行测试。
在表单内部按下[enter]
后,您将看到三个警报:一个用于输入,一个用于按钮,一个用于表单。我不明白为什么会涉及到按钮和表单?
我对 DOM 事件的理解应该是源自输入的键盘事件,然后冒泡到文档。但是我采取了一切措施来取消那个事件。所以我的问题有三个:
- 为什么事件会发生
<button>
? - 为什么即使事件是按键事件,按钮也会触发其侦听器(点击并点击)?
- 为什么 preventDefaults / stopPropagations 不启动。