2012-05-24 145 views
0

我正在尝试使用jquery覆盖默认选项卡导航。我不能简单地使用tabindex属性,因为我试图让tab键从文本输入导航到虚拟文本框(codemirror)。我一直在尝试使用下面的javascript/jquery无济于事:覆盖默认选项卡导航

$('#modelName').focus(function() { 
    $(this).keydown(function(event) { 
     if(event.keyCode=='9') { 
      codeMirror.focus(); 
     } 
    }); 
}); 

有关如何使这项工作的任何想法?

+0

尝试'event.which'而不是密钥号码。 –

+0

'event.which === 9' no quotes。 jQuery规范'哪个' – elclanrs

回答

1
$('#modelName').keydown(function(event) { 
    if(event.keyCode == 9) { 
     event.preventDefault(); 
     codeMirror.focus(); 
    }else{ 
     alert("Not the right key! " + event.keyCode); 
    } 
    }); 

这很好,有一个捕获,只是为了让你可以看到你错在哪里。 在这种情况下,我认为它是字符串vs int。

此外,您的代码的方式,每当#modelName获得焦点时,您将应用新的​​事件处理程序,而不删除旧的。稍后可能会导致问题。

+0

感谢您的帮助! event.preventDefault()做到了。 –

+0

如果我的回答解决了问题,并且您很高兴,那么请接受此问题作为您的答案,让社区继续前进。谢谢。 – ahren

+0

对不起,它告诉我等一会儿,我忘了回来。 –

0

试试这个

$('#modelName').keyup(function (e) { 
    if(e.keyCode== 9){ 
    codeMirror.focus(); 
    } 
}); 

使用KEYUP()代替的keydown()

+0

如果您试图模仿常规标签行为,'keydown'会感觉更加正确。另外,'keyCode' 27是'esc'键...... – ahren