我有一个带有两个按钮的页面。一个是 <button>
元素,另一个是 <input type="submit">
。按钮按此顺序出现在页面上。如果我在表单任意位置的文本字段中按下 <Enter>
,按钮元素的 click
事件被触发。我认为这是因为按钮元素位于第一位。
我找不到任何看起来像设置默认按钮的可靠方法,此时我也不一定想要。在没有更好的东西的情况下,我在表单的任何地方捕获了一个按键,如果它是 <Enter>
按下的键,我只是否定它:
$('form').keypress( function( e ) {
var code = e.keyCode || e.which;
if( code === 13 ) {
e.preventDefault();
return false;
}
})
据我目前所知,它似乎在工作,但感觉非常笨拙。
有谁知道这样做的更复杂的技术?
同样,这个解决方案是否有任何我不知道的陷阱?
谢谢。
原文由 Rob Wilkerson 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
应该做的伎俩。
原因是因为表单内的按钮将其类型隐式设置为
submit
。正如 zzzzBoz 所说,规范说第一个button
或input
和type="submit"
是在这种情况下触发的。如果您专门设置type="button"
,那么浏览器就会将其删除。