2014-06-12 195 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); 
相关问题