输入触发按钮点击

新手上路,请多包涵

我有一个带有两个按钮的页面。一个是 <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 许可协议

阅读 501
1 个回答

使用

<button type="button">Whatever</button>

应该做的伎俩。

原因是因为表单内的按钮将其类型隐式设置为 submit 。正如 zzzzBoz 所说,规范说第一个 buttoninputtype="submit" 是在这种情况下触发的。如果您专门设置 type="button" ,那么浏览器就会将其删除。

原文由 Maddog 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题