输入

0

内打字时忽略按键我有以下指令,捕获某些按键:输入

angular.module('app').directive('keyPress', function ($document) { 
    return { 
     restrict: 'A', 
     link: function (scope, element, attrs) { 
      $document.bind('keyup', function (e) { 
       if (e.keyCode == 83){ // S key 
        element.focus(); 
       }; 
       if (e.keyCode == 27){ // ESC key 
        element.blur(); 
       }; 
      }); 
     } 
    } 
}); 

搜索框元件然后使用它来与SESC键和缩小聚焦:

<input type="text" class="form-control" placeholder="Search" key-press> 

不幸的是,当在包含此搜索输入的页面上输入其他输入时,还会检测到按键并且搜索框将被聚焦。有没有办法只抓住按键时不是重点不同的输入?

回答

1

获取event.target您可以访问焦点元素,因此您可以检查焦点元素是否为输入。

$document.bind('keyup', function (event) { 
    if(event.target.type === 'input') { 
     return; 
    } 
    if (event.keyCode == 83){ // S key 
     element.focus(); 
    }; 
    if (event.keyCode == 27){ // ESC key 
     element.blur(); 
    }; 
}); 
+0

很酷,有效!尽管不是检查目标类型是否为“输入”,但由于输入类型很多,因此检查它是否为空更容易。 – mart1n