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

时间:2017-02-21 21:02:26

标签: angular-ui angular-ui-typeahead

使用指定等待的angular-ui typeahead

<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时取消等待而不显示输出。

这是一个可以玩的玩家: https://plnkr.co/edit/QkYumhmcDsXexHSLALsf?p=preview

例如,如果我输入&#34; a&#34;然后在经过1000ms之前按ENTER键,不应显示typeaheads菜单。

2 个答案:

答案 0 :(得分:2)

感谢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

答案 1 :(得分:1)

快速修复 - 不是我害怕的棱角分明的方式,但是到底是什么:

HTML中的

  1. 为您的输入字段指定一个ID - 例如:search_input
  2. 添加ng-enter =“blurme()”
  3. 在TypeaheadCtrl中

    : 添加功能

    $scope.blurme = function() {
        // blur input field to cancel autosuggest after typeahead-wait-ms
        var search_input = document.getElementById ('search-input');
        search_input.blur ();
    }