【发布时间】:2021-12-15 17:02:06
【问题描述】:
我一直认为点击“Return”键的默认行为是提交表单。但它似乎更复杂:如果附近有一个按钮,则“返回”键似乎会模拟该按钮上的“点击”事件,而不是提交表单。这是一个例子:
document.querySelector('form').onsubmit = ev => {
ev.preventDefault();
document.querySelector('#result').innerText
= ev.target.elements.text.value;
};
document.querySelector('#troublesome').onclick =
ev => {
ev.preventDefault();
ev.target.innerText = Math.random();
};
<form>
<input type="text" name='text' value='something' />
<button id="troublesome">Trouble</button>
<button>Submit</button>
</form>
<div id="result">not submitted</div>
在上面,当您在<input> 元素中按回车键时,浏览器会选择单击“麻烦”按钮。但为什么?这里到底发生了什么?我在哪里可以阅读规范?
【问题讨论】:
-
您是否尝试过交换两个按钮以查看当您聚焦输入并按 Enter 时的效果?
-
@dalelandry 是的 - 然后它会选择另一个按钮。就好像它选择了最接近输入的按钮,但我不知道在哪里可以找到规范中描述的这种行为
-
因为 return 单击了该表单中的第一个提交按钮。你所有的按钮都是提交按钮。
-
我刚刚找到了stackoverflow.com/questions/925334/…,它更详细地提出并回答了这个问题,所以我投票结束了我自己的问题
-
@connexo 谢谢 - 从 HTML5 开始就是这种情况:stackoverflow.com/a/925353/229792
标签: javascript html