防止浏览器中键的默认操作

时间:2014-04-15 20:29:49

标签: javascript angularjs keyboard keydown keyup

我尝试了event.preventDefaultevent.stopPropagation,并从事件处理程序返回false。

没有什么能帮助防止浏览器中某些键的行为。

例如,我想使用 Page Down Page Up 在AngularJS app中的记录(Next,Previous)之间导航,获取下一个或上一个记录。它工作正常。但它不会阻止浏览器对 Page Down Page Up 执行默认操作。例如,当站在选择(下拉)元素时按下那些将改变下拉列表的选择,然后移动到下一个记录。对于许多其他无法覆盖的有用键,实际上也是如此: Home End (如果关注它,将选择下拉列表更改为第一个或最后一个选择)。

这是我目前的代码:

$document.bind('keyup', function(e) {
    switch (e.keyCode) {
        case 109:
            if (e.altKey) {
                $scope.gotoPrev(e);
                e.preventDefault();
                e.stopPropagation();
                window.scrollTo(0, 0);
                return false;
            }
            break;
        case 107: ....

如您所见,我正在使用其他键( Alt + Alt - 等) Page Down Page Up 。但我想用那些。

另一个相关问题是,如何防止Tab键标签进入url区域。我希望它只循环浏览页面上的字段,而不是跳出页面并进入网址区域。

1 个答案:

答案 0 :(得分:1)

使用'keydown'而不是'keyup'

keyup用户在执行该密钥的默认操作后释放密钥时触发。 (http://www.quirksmode.org/dom/events/keys.html