【发布时间】:2018-04-19 23:25:29
【问题描述】:
我有一个带有输入和两个按钮的表单,一个是“按钮”取消,一个是“输入”提交。但是,当我在输入时按下返回键时,onSubmit 事件会根据它们在 HTML DOM 上的位置触发按钮。这是简化的代码
// cancel button goes first
<form id="form">
<input>
<button id="cancel">Cancel</button>
<input type="submit" value="Submit">
</form>
const cancelButton = document.getElementById('cancel');
const form = document.getElementById('form');
cancelButton.addEventListener('click', () => { console.log('cancel') });
form.addEventListener('submit', () => { console.log('submit') });
当我按回车键输入时,它会记录“取消”。但是,如果我先放置提交按钮,我将正常记录“提交”。
返回键怎么可能触发取消按钮上的监听器?
【问题讨论】:
-
变量
cancelButton和form是什么 - 你还没有显示它们代表什么 -
@JaromandaX 对不起,我太懒了,让我穿上。
-
我知道这可能很明显,只是想排除愚蠢的错别字:p
-
@JaromandaX 是的,这只是一种伪代码,代码更复杂。不过让我看看有没有错别字。
-
@h1b9b 答案很好,但顺便说一句......你为什么不坚持使用相同类型的对象?
<button type="button">Cancel</button>和<button type="submit">Submit</button> -- or make them both` 元素。无论哪种方式,您都将事件处理程序连接到它们两者。如果它们都是相同的种类,那么设计看起来会更加一致。
标签: javascript html forms addeventlistener