javascript - 将焦点转移到 keydown - 仅 JavaScript - 无 jQuery

标签 javascript jquery html css focus

我希望能够仅使用 JavaScript 使用箭头键浏览网页上的一些可聚焦元素。

我找到了一个很好的解决方案here 。唯一的问题是,它使用了 jQuery,而我不想使用它。该答案的作者告诉我,仅使用 JavaScript 就可以达到相同的效果。我只是不知道如何,甚至不知道要寻找什么。我还是个初学者,所以如果这是一个显而易见的问题,我很抱歉。

这是我想要实现的 jQuery 版本:

<input class='move' /><input class='move' /><input class='move' />

$(document).keydown(
    function(e)
    {    
        if (e.keyCode == 39) {      
            $(".move:focus").next().focus();
        }
        if (e.keyCode == 37) {      
            $(".move:focus").prev().focus();
        }
    }
);

最佳答案

您可以使用以下功能:

  • querySelectorAll()getElementsByClassName 用于选择元素。
  • addEventListener() 用于绑定(bind)事件监听器。
  • previousElementSiblingnextElementSibling 用于获取 previous()next() 元素。

var inputs = document.getElementsByClassName("move");
for (var i = 0; i < inputs.length; i++)
  inputs[i].addEventListener("keyup", function (event) {
    if (event.keyCode == 37) {
      if (this.previousElementSibling) {
        this.previousElementSibling.focus();
      }
    }
    else if (event.keyCode == 39) {
      if (this.nextElementSibling) {
        this.nextElementSibling.focus();
      }
    }
  }, false);
<input class='move' />
<input class='move' />
<input class='move' />

有关更多替换内容,请查看:You Might Not Need jQuery 。 😇

关于javascript - 将焦点转移到 keydown - 仅 JavaScript - 无 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53942870/

相关文章:

html - 同一 HTML 页面上有超过 1 个幻灯片

javascript - 在对象数组中查找匹配的对象?

javascript - jQuery JavaScript 在 View /窗口中检测对象

html - 当 <body> 是父级时,为什么 ":last-child"选择器不适用?

javascript - 将 $.when() 与可变函数数组一起使用

javascript - 如何在 dxTextBox 中添加验证

javascript - 每当在底部的窗口中输入新元素时,滚动条应转到 bottoop m

JavaScript/设置从 0 开始递增索引

javascript - 在设定的时间向下滚动聊天,但在用户交互时停用

javascript - PHP/Javascript 分块上传 : IE9 corrupt file if filesize is over upload_max_filesize or post_max_size