2012-05-24 170 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