2015-11-12 4 views
1

Я имею следующую директиву:Угловая директива: связать KeyDown якорь элемент

.directive('hasFocus',function(){ 
    return{ 
     restrict: 'A', 
     link : function(scope,element,attrs){ 
      element.on('keydown',function(e){  
       switch(e.which){ 
         case 38 : 
          e.preventDefault(); 
          selectNextButton($(this),true); 
         break; 
         case 40 : 
          e.preventDefault(); 
          selectNextButton($(this)); 
         break; 
        } 
       }); 
     } 
    } 
}); 

Это прекрасно работает, когда я прикрепить его к кнопке, но не работает, когда я прилагаю к якорю.

<button id="mybutton" has-focus>the button</button> 


<a id="mybutton" data-ng-click="doSomething()" has-focus>the anchor</a> 

Я хочу, чтобы иметь возможность захватить e.which, когда пользователь осуществляет навигацию с помощью кнопки со стрелками.

Невозможно привязать событие keydown к якорю?


https://api.jquery.com/keydown/ утверждает, что она может:.

"KeyDown событие посылается к элементу, когда пользователь сначала нажимает клавишу на клавиатуре Он может быть прикреплен к любому элементу, но событие только отправляется элементу с фокусом. "

ответ

1

Кажись, как вы не можете установить фокус для anchor тега по щелчку, когда есть не существуетhref атрибутов в вашем anchor. Вот answer на stackoverflow, который состоит из списка DOM element, который может принимать focus. Что вы можете сделать, так это добавить в атрибуты href значение anchor, и оно должно работать на основе вашего ожидания. Fiddle.

Смежные вопросы