我尝试了event.preventDefault
和event.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区域。我希望它只循环浏览页面上的字段,而不是跳出页面并进入网址区域。
答案 0 :(得分:1)
使用'keydown'而不是'keyup'
keyup
用户在执行该密钥的默认操作后释放密钥时触发。 (http://www.quirksmode.org/dom/events/keys.html)