AngularJS Keydown事件preventDefault在Firefox中不起作用

问题描述

在我的angularjs应用程序中,我们有复选框用作切换按钮。此外,我们还有一些其他元素可以用作按钮。

我需要为键盘提供一致的用户体验,其中一部分就是需要使这些按钮既响应空格又输入击键事件。

我创建了一个指令(仅属性),可以将其添加到html中的相关元素中。该指令查找Enter或空格键按下。如果找到,它将以编程方式单击该元素。

引用http://jsfiddle.net/gy56j9xz/21/

<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();

                    }
                });
            }
        }
    }]);

Firefox存在问题。如果我通过空格选择复选框,则单击两次。为什么在这种情况下event.preventDefault()不起作用?

PS:以上方法在Chrome中工作正常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)