2017-02-21 3 views
2

Используя угловой-щ машинописный с ждущего указанныйКак отменить машинописный-выжидательную мс на нажатие клавиши

<input type="text" 
    ng-model="selected" 
    uib-typeahead="state for state in states | filter:$viewValue | limitTo:8" 
    typeahead-focus-first="false" 
    typeahead-wait-ms="1000" 
    class="form-control"> 

Я хотел бы, чтобы отменить ожидание и не показывать typeaheads когда ENTER нажата до времени ожидания .

Вот plunker играть: https://plnkr.co/edit/QkYumhmcDsXexHSLALsf?p=preview

Так, например, если я введу «а», а затем нажмите кнопку ENTER, прежде чем 1000мс будет ellapsed, меню typeaheads не должно быть показано на рисунке.

ответ

1

Благодаря идее oFace blur, я придумал эту директиву.

.directive('typeaheadCancelEnter', function() { 
     return { 
      restrict: 'A', 
      link: function ($scope, elem, attrs) { 

       elem.bind('keyup', function ($event) { 
        var element = $event.target; 
        var code = $event.keyCode || $event.which; 
        if (code == 13) { //Enter keycode 
         element.blur();  
        } 

       }); 

      } 
     }; 
    }) 

https://plnkr.co/edit/vodZHT14zZjdcTEKVKq9?p=preview

1

быстро исправить - не угловой путь я боюсь, но какого черта:

в HTML:

  1. дайте поле ввода идентификатор - например: search_input
  2. добавить нг-входа = "blurme()"

в вашем TypeaheadCtrl: добавить функцию

$scope.blurme = function() { 
    // blur input field to cancel autosuggest after typeahead-wait-ms 
    var search_input = document.getElementById ('search-input'); 
    search_input.blur(); 
} 
Смежные вопросы