2014-06-12 156 views
0

我有一個javascript鍵的問題,Chrome(現在只在Chrome上測試)不能識別文本輸入上的上下箭頭,因爲它具有這種默認行爲改變插入位置。 我的代碼如下:JavaScript:在輸入文本上使用向上和向下箭頭

if (!e) e = window.event; 
var keyCode = e.keyCode || e.which; 

if (keyCode == '13'){ //enter key 
    //some code that works 
    return false; 

}else if(keyCode=='38'){ //up key 
    //some other code that doesn't work 
    return false; 

}else if(keyCode=='40'){ //down key 
    //some other code that doesn't work 
    return false; 
} 

如果任何人有一個解決方案,我將不勝感激。 謝謝!

+6

這是來自'onkeypress'事件處理程序的片段嗎?如果是這樣,請使用'onkeydown',當按下方向鍵時不會觸發'onkeypress'。 – Teemu

+0

就是這樣,謝謝! –

回答

1

很難看到代碼來自哪裏(我猜想是一個按鍵監聽器)。 正如你可以看到下面和this fiddle(並Teemu也指出),按鍵不會被箭頭鍵調用。

在另一個說明中,使用event.preventDefault()來防止瀏覽器的默認行爲,在您的情況下放置插入符號,您的偵聽器函數也可以將事件對象作爲參數。

var listener = function (e) { 
    e = e || window.event; 

    alert(e.type); 
    var keyCode = e.keyCode || e.which; 

    if(keyCode=='38' || keyCode=='40'){ //arrow key 
     alert("arrow!"); 
     e.preventDefault(); 
     return false; 

    }   
} 

var elem = document.getElementById('input'); 

elem.addEventListener('keydown', listener, false); 
相關問題