我有一个带有两个按钮的页面。一个是<button>
元素,另一个是 <input type="submit">
.按钮按该顺序显示在页面上。如果我在表单中的任意文本字段中并按 <Enter>
,按钮元素的click
事件被触发。我认为这是因为按钮元素位于第一位。
我找不到任何看起来像设置默认按钮的可靠方法的方法,我现在也不一定想这样做。在没有更好的情况下,我已经在表单的任何位置捕获了一个按键,如果它是 <Enter>
按下的键,我只是否定它:
$('form').keypress( function( e ) {
var code = e.keyCode || e.which;
if( code === 13 ) {
e.preventDefault();
return false;
}
})
据我目前所知,它似乎有效,但感觉非常笨拙。
有谁知道这样做的更复杂的技术吗?
同样,这个解决方案有什么我不知道的陷阱吗?
谢谢。
最佳答案
使用
<button type="button">Whatever</button>
应该可以解决问题。
原因是表单内的按钮的类型隐式设置为submit
。正如 zzzzBoz 所说,规范说第一个 button
或 input
与 type="submit"
是在这种情况下触发的。如果您专门设置了 type="button"
,则浏览器会将其从考虑中移除。
https://stackoverflow.com/questions/4763638/