javascript - 将焦点集中到容器内的第一个元素时出现问题

标签 javascript jquery focus

我只是想在按下 Tab 键时在特定元素内的元素之间循环焦点。我想要做的是,当从元素内的最后一个控件按下选项卡时,不要将焦点设置到不是元素后代的任何元素。此时焦点必须设置到容器内的第一个输入元素。

我已经做了一个示例,但它不起作用,我无法找出问题所在。

可以找到示例 here

完整代码为

Script

$(function(){
    $(":input:last","#div1").bind("keydown", function(e){
         if ( e.keyCode === 9 )
         {
             var firstElem = $(":input:first","#div1");
         firstElem.focus();
         }
    });
});

CSS

input.red { width: 200px; border: solid 1px red; }
input { width: 200px; }

HTML

<input type="text" class="red" />
<div id="div1">
    <input type="text" id="txt1" />
    <select id="sel1">
        <option>1</option>
    </select>
    <input type="text" id="txt2" />
</div>

如有任何帮助,我们将不胜感激。

谢谢

编辑

谢谢大家。问题解决了。这是因为 keydown 事件中缺少 return false; 语句。

最佳答案

尝试使用 Keypress 而不是 Keydown

同时返回 false,以便取消按键正常处理。

似乎发生的情况是您正在移动焦点,然后选项卡发生,将其移动到选择。您需要设置焦点,然后返回 false,以便取消常规选项卡。

$(function(){
$(":input:last","#div1").bind("keydown", function(e){
     if ( e.keyCode === 9 )
     {
         var firstElem = $(":input:first","#div1");
         firstElem.focus();
         return false;
     }
});

});

关于javascript - 将焦点集中到容器内的第一个元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516223/

相关文章:

javascript - ShellExecute 权限被拒绝 SCRIPT70、IE11 Windows 10

jQuery ListBox 单个​​或多个选定项目

javascript - 如何禁用鼠标滚轮单击按钮?

javascript - 正则表达式至少匹配一个字符或一个空格

javascript - Flask React 应用程序不热重载

javascript - 使用jquery动态添加字段

javascript - 基于另一个 div 设置父 div 的样式

javascript - Bootbox.prompt() 将焦点设置在文本字段上

html - 即使字段是只读的,光标也会闪烁

javascript - AngularJS 输入字段单击时不会失去焦点