我正在解决项目中的辅助功能问题。我正在努力的一个场景是,我们有ng-click事件的锚标记。当有人点击标签并使用键盘在页面上到达锚标签时,他们会按下输入键,他们认为应该做某事。但是,遗憾的是,输入键和单击事件可以很好地使用按钮控件但不能使用锚点。任何人都有任何建议如何解决这个问题?
提前谢谢。答案 0 :(得分:0)
我遇到了类似的问题,并解决了它创建一个简单的指令,它会拦截链接上的keydown / keypress事件,然后调用与该指令相关的函数。
这是指令:
// Allows for the interception of the enter key, and then calling a passed in function
(function () {
'use strict';
angular
.module('app.directives')
.directive('convEnter', convEnter);
function convEnter() {
var directive = {
restrict: 'A',
link: link
};
return directive;
////////////////////////////////////////////////////////////////////////
function link(scope, element, attrs) {
element.bind('keydown keypress', function (event) {
if (event.which === 13) {
scope.$apply(function () {
scope.$eval(attrs.convEnter, { 'event': event });
});
event.preventDefault();
}
});
}
}
})();
要使用它,您只需将其应用于您的链接,即:
<a conv-enter="vm.click()" ng-click="vm.click()">Click Link</a>
当然,当你指定两次“vm.click()”时,这有点重复;你可以根据需要通过让指令简单地调用元素本身的“click”函数来优化它,只要你总是想要click和enter键来调用相同的函数。 (在我的场景中,我有时需要区分这两者,因此我允许传递一个单独的函数)