问题描述
在我的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 (将#修改为@)