Javascript Angularjs keydown事件preventDefault在firefox中不工作
在我的angularjs应用程序中,复选框用作切换按钮。此外,我们还有一些其他元素用作按钮 我需要为键盘提供一致的用户体验,这是使这些按钮响应空格和输入键事件的一部分 我创建了一个指令(仅限属性),可以将其添加到html中的相关元素中。此指令查找enter键或空格键。如果找到,它将以编程方式单击元素 提及 问题在于Firefox。如果我通过空格选择复选框,它会单击两次。为什么在这种情况下event.preventDefault()不起作用Javascript Angularjs keydown事件preventDefault在firefox中不工作,javascript,angularjs,firefox,angularjs-directive,Javascript,Angularjs,Firefox,Angularjs Directive,在我的angularjs应用程序中,复选框用作切换按钮。此外,我们还有一些其他元素用作按钮 我需要为键盘提供一致的用户体验,这是使这些按钮响应空格和输入键事件的一部分 我创建了一个指令(仅限属性),可以将其添加到html中的相关元素中。此指令查找enter键或空格键。如果找到,它将以编程方式单击元素 提及 问题在于Firefox。如果我通过空格选择复选框,它会单击两次。为什么在这种情况下event.preventDefault()不起作用 PS:上面的方法在Chrome中效果很好。我不知道处理这
PS:上面的方法在Chrome中效果很好。我不知道处理这个问题的正确方法是什么,我最后在关联空格键事件之前检查了元素是否是按钮、复选框或单选按钮。如果有人感兴趣,这里是更新的JSFIDLE-
<input type="checkbox" ng-click="incCount()" ng-model="model"
click-on-keydown/>
angular.module('myApp.directives', [])
.directive('clickOnKeydown', [function () {
return {
restrict:'A',
link:function (scope, element, attrs) {
element.bind("keydown", function (event) {
if(event.which === 13 || event.which === 32) {
console.log('Clicking from directive');
element[0].click();
event.preventDefault();
event.stopPropagation();
}
});
}
}
}]);