jQuery在keydown事件上将注意力集中到某个按钮上似乎自动按下了按钮?

时间:2019-02-23 12:28:38

标签: javascript jquery events focus onkeydown

我有两个文本输入和一个按钮。

对于两个文本输入,我都使用JQuery设置了一个keydown事件,以便在按Enter键时将焦点切换到下一个元素。

所以:

  • 在第一个输入中按Enter键应专注于第二个输入。
  • 在第二个输入中按Enter键应将焦点放在按钮上。

此处的演示代码:https://jsfiddle.net/5v8ze2m4/

看看会发生什么:

  1. 单击第一个输入字段以在此处设置焦点。
  2. 按Enter键。焦点将移至第二个输入字段(正确)。
  3. 再次按Enter键。焦点将移至该按钮(正确)无论该按钮的onclick事件是否被触发(不正确)

请注意,当我使用Enter键时,只会发生 。如果我在两个事件处理程序中都将keyCode条件更改为40而不是13(对于光标键按下而不是Enter),它将按预期工作。

另外,还有一个小问题:我自动关注第一个似乎无效的输入元素。但这可能与JSFiddle有关。

1 个答案:

答案 0 :(得分:0)

您需要停止默认事件。使用event.preventDefault()方法可以将焦点对准按钮功能,例如:

function FocusToButton(evt)
{
    evt.preventDefault();
    var keyCode = evt.keyCode || evt.which; 
    if (keyCode==13) $('#btn').focus();
}

最好也将其添加到其他功能中。进一步了解preventDefault()here