Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:在输入文本上使用上下箭头_Javascript_Html_Events_User Interface_Keyboard - Fatal编程技术网

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

JavaScript:在输入文本上使用上下箭头,javascript,html,events,user-interface,keyboard,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

我对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;
}
如果有人有解决办法,我将不胜感激。
谢谢大家!

很难看出代码来自何处(我猜是一个按键侦听器)。 正如您在下面看到的和(正如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);

这段代码是来自
onkeypress
事件处理程序的吗?如果是这样,请改用
onkeydown
onkeypress
在按箭头键时不会触发。