1

下面的代码可以有效地防止浏览器默认在 Chrome 和 Safari 中触发。但是,由于某种原因,即使在 Firefox 中按下箭头键后,我的代码也不会触发。

$(window).keydown(function(e) {
    switch(e.which){
        case 39: //right arrow key
            e.preventDefault();
            $('body').scrollLeft(scrollNow + z(10));
            break;
        case 37: // left arrow key
            e.preventDefault();
            $('body').scrollLeft(scrollNow - z(10));
            break;
    }
});

我也尝试过,return false;e.preventDefault();没有效果。我也试过把线放在e.preventDefault();后面scrollLeft,但它也不起作用。有任何想法吗?

4

4 回答 4

2

尝试这个:

$(window).keydown(function(e) {
    switch(e.keyCode){
        case 39: //right arrow key
            e.preventDefault();
            $('body').scrollLeft(scrollNow + z(10));
            break;
        case 37: // left arrow key
            e.preventDefault();
            $('body').scrollLeft(scrollNow - z(10));
            break;
    }
});
于 2013-06-20T16:48:21.627 回答
2

尝试这个 -

code = e.keyCode || e.which;
switch(code){
于 2013-06-20T16:46:24.567 回答
1

我自己也遇到了这个问题。我为选择输入的 keydown 事件添加了一个事件侦听器,以分别禁用左/右键遍历选项顶部/右侧。它在 Chrome 和 IE 中完美运行。根据我所阅读的内容,到目前为止,这绝对是一个错误,对于是否将其视为错误进行了很多辩论和猜测。我什至将另一个事件侦听器附加到上述用于 keyup 的选择输入;在从 keydown 事件(Firefox)中调用 preventDefault 之后,我注意到它也触发了。但是,不会阻止该操作。很烦人。

仍在尝试确定解决方法。

于 2014-10-28T18:40:22.900 回答
0

尝试这个,

更新

$(window).keydown(function(e) {
    var code = (e.keyCode ? e.keyCode : e.which);
    switch(code){
        case 39: //right arrow key
            e.preventDefault();
            $('body').scrollLeft(scrollNow + z(10));
            break;
        case 37: // left arrow key
            e.preventDefault();
            $('body').scrollLeft(scrollNow - z(10));
            break;
    }
});
于 2013-06-20T16:52:47.373 回答