我想在按下Tab键时防止默认操作,只想在chrome中执行,我找不到解决方案,有人可以帮忙吗?
我正在使用jquery
答案 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.key
。 event.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>