阻止chrome中tab键的默认操作?

时间:2011-05-11 08:27:04

标签: javascript jquery

我想在按下Tab键时防止默认操作,只想在chrome中执行,我找不到解决方案,有人可以帮忙吗?

我正在使用jquery

4 个答案:

答案 0 :(得分:62)

input.keydown(function(event){
    if (event.keyCode === 9) {
        event.preventDefault();
    }
})

在keyup上为时已晚,你需要在keydown上调用该事件。这对我有用。

答案 1 :(得分:14)

这是一篇关于如何检测chrome的文章: http://javascriptly.com/2008/09/javascript-to-detect-google-chrome/

这个问题:Disable tab key on a specific div可能会帮助您禁用Tab键。如果你能够自己组合,你可能已经开始工作了。

禁用功能将变为:

$('.textarea').on('keyup mouseup', function(e) {
  if(e.which == 9) { e.preventDefault(); }
});

e.which = 9是根据给出的最后一个链接的tab键。如果你能够自己包围浏览器检测,我想你已经有了自己的工作实例。

答案 2 :(得分:2)

这可能有点迟了,但结合了@ EvgueniNaverniouk的回答和@K。的评论(关于@Joshua_Pendo的回答),确定你必须使用{{1最近的onkeydown代替event.keyevent.keyCode的作用是返回密钥的名称而不是代码。例如,event.key键将返回为" Tab" (这是区分大小写的)。这是完成的工作代码:

tab



function checkForTab(event) {
    if (event.key == "Tab") {
        event.preventDefault();
    }
    else {
        //whatever stuff if not Tab
    }
}
document.getElementById("element").onkeydown = checkForTab(event);

function checkForTab(event) {
	if (event.key == "Tab") {
		event.preventDefault();
        document.getElementById('element').value += " Also notice this text appears every time you press tab!";
	}
	else {
		//whatever stuff if not Tab
	}
}
document.getElementById('element').onkeydown = checkForTab;
//Trick is to use keydown and use event.key instead of keyCode




运行上面的代码片段以查看我的意思的示例。您现在可以使用这样的代码将Tab的默认操作替换为向textarea添加空格的操作。注意:我使用<textarea id="element" style="width: 300px; height: 100px;">Press tab key here, you'll see default action doesn't occur!</textarea>而不是.key的原因是因为.keyCode现在已被弃用,如@ K._所述。 希望这会有所帮助!

答案 3 :(得分:0)

JS:

  document.getElementById('message_textarea').addEventListener('keydown', (event) => {
    console.log('tab pressed on message textarea');
    if (event.keyCode === 9) {
      event.preventDefault();
    }
  });

HTML:

<textarea id="message_textarea"></textarea>