在文本框中捕获TAB键[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在文本框中捕获TAB键[关闭]相关的知识,希望对你有一定的参考价值。

我希望能够在文本框中使用Tab键来标记四个空格。现在的方式,Tab键将我的光标跳转到下一个输入。

是否有一些javascript会在文本框中冒出Tab键之前捕获Tab键?

据我所知,某些浏览器(即FireFox)可能不允许这样做。像Shift + Tab或Ctrl + Q这样的自定义键组合怎么样?

答案

即使您捕获了keydown / keyup事件,这些是Tab键触发的唯一事件,您仍然需要某种方法来阻止默认操作,移动到Tab键顺序中的下一个项目,从而发生。

在Firefox中,您可以在传递给事件处理程序的事件对象上调用preventDefault()方法。在IE中,您必须从事件句柄返回false。 JQuery库在其事件对象上提供了一个preventDefault方法,该方法适用于IE和FF。

<body>
<input type="text" id="myInput">
<script type="text/javascript">
    var myInput = document.getElementById("myInput");
    if(myInput.addEventListener ) {
        myInput.addEventListener('keydown',this.keyHandler,false);
    } else if(myInput.attachEvent ) {
        myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
    }

    function keyHandler(e) {
        var TABKEY = 9;
        if(e.keyCode == TABKEY) {
            this.value += "    ";
            if(e.preventDefault) {
                e.preventDefault();
            }
            return false;
        }
    }
</script>
</body>
另一答案

我更倾向于缩进缩进而不是打破表单项之间的标签。

如果要缩进以在Markdown框中输入代码,请使用Ctrl + K(或Mac上的⌘K)。

在实际停止操作方面,当您从事件回调返回false时,jQuery(Stack Overflow使用)将阻止事件冒泡。这使得使用多个浏览器的生活更轻松。

另一答案

之前的答案很好,但我是那些坚决反对将行为与演示混合在一起的人之一(将JavaScript放在我的html中)所以我更喜欢把我的事件处理逻辑放在我的JavaScript文件中。此外,并非所有浏览器都以相同的方式实现事件(或e)。您可能希望在运行任何逻辑之前进行检查:

document.onkeydown = TabExample;

function TabExample(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var tabKey = 9;
  if(evt.keyCode == tabKey) {
    // do work
  }
}
另一答案

我建议不要更改密钥的默认行为。我尽可能不触摸鼠标,所以如果你让我的tab键没有移动到表格上的下一个字段,我会非常加重。

但是,快捷键可能很有用,尤其是对于大型代码块和嵌套。 Shift-TAB是一个糟糕的选择,因为它通常会将我带到表单上的前一个字段。也许WMD编辑器上的一个新按钮可以插入带有快捷键的代码-TAB?

另一答案

ScottKoon给出的最佳答案存在问题

就这个

} else if(el.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

应该

} else if(myInput.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

因此,它在IE中不起作用。希望ScottKoon能够更新代码

另一答案

在Mac上的Chrome中,alt-tab将制表符插入<textarea>字段。

这是一个:。周!

以上是关于在文本框中捕获TAB键[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:如何在文本框中捕获 TAB 按键

访问表单:在文本框中捕获日期更改

如何在text文档里替换tab键字符啊

javascript 怎样实现按tab跳转

wpf 焦点定位到 文本框开头? 2:如何按Tab,让焦点不进入第3个文本框,意思是在前两个文本框中切换

在 WPF 富文本框中点击选项卡按钮时会发生啥?