JavaScript:在输入文本上使用向上和向下箭头

时间:2014-06-12 17:43:28

标签: javascript html events user-interface keyboard

我的javascript键有问题,Chrome(现在只在chrome上测试)无法识别文本输入上的向上和向下箭头,因为它具有更改插入位置的默认行为。 我的代码如下:

 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;
}

如果有人有解决方案,我会非常感激。 谢谢!

1 个答案:

答案 0 :(得分:1)

很难看到代码的来源(我猜是一个按键监听器)。 如下所示,this fiddle(以及Teemu也指出),不会在箭头键上调用keypress。

另一方面,使用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);