如何在按键时取消 typeahead-wait-ms

How to cancel typeahead-wait-ms on key press

使用 angular-ui 指定等待时间的提前输入

<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">

我想取消等待,并且在达到等待时间之前按下 ENTER 时不显示预输入。

这里有一个 plunker 可以玩: https://plnkr.co/edit/QkYumhmcDsXexHSLALsf?p=preview

因此,例如,如果我输入 "a",然后在 1000 毫秒结束前按 ENTER,则不应显示预输入菜单。

快速修复 - 不是我担心的 angular 方式,但到底是什么:

在HTML中:

  1. 为您的输入字段指定一个 ID - 例如:search_input
  2. 添加一个 ng-enter="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 ();
}

多亏了 oFace 模糊的想法,我想出了这个指令。

.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