2016-11-06 84 views
1

我正在解決項目中的可訪問性問題。我正在努力的一個場景是,我們有一個帶有ng-click事件的錨標籤。當某人正在使用鍵盤擊中製表符併到達頁面上的錨標記時,他們正在敲輸入鍵,並且他們認爲它應該做些什麼。但是,不幸的是,輸入按鍵和點擊事件與按鈕控制很好地結合,但與錨點無關。任何人有任何建議如何解決這個問題?提高錨鍵 - 點擊進入按鍵訪問角度

在此先感謝。

回答

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」函數來優化此操作,只要您始終希望單擊和回車鍵調用相同的函數即可。 (在我的情況下,我有時需要區分這兩者,因此我允許傳遞一個單獨的函數)