【问题标题】:jQuery autocomplete in angularJS directive gets triggered even after selecting an optionangularJS指令中的jQuery自动完成即使在选择一个选项后也会被触发
【发布时间】:2016-03-01 03:29:01
【问题描述】:

下面是我想要自动完成功能的输入框:

<input auto-complete-user ng-hide="searchFilter.AssignedToAnyOne" ng-model="searchFilter.FilterByUser"
                            placeholder="Name / Company name" type="text" id="txtFilterUser"
                            class="filterUser form-control input-sm" />

还有 angularJS 指令 -

BTWebApp.directive('autoCompleteUser', function ($timeout) {
if (localStorage[1] != undefined) {
    return function (scope, iElement, iAttrs) {
        iElement.autocomplete({
            source: JSON.parse(localStorage[1]),
            select: function () {
                $timeout(function () {
                    iElement.trigger('input');
                }, 0);
            }
        });
    };
}});

自动完成工作正常,除了一旦我从列表中选择了一个选项,自动完成就会再次触发,从而再次提示我选择的项目,这很烦人。但是,当我删除 iElement.trigger('input'); 时,它工作正常,但模型没有更新。

我在我的代码中使用它之前提到了这个jsFiddle,这个问题只在我在我的项目代码中使用它时出现,它在那个 jsFiddle 中工作得很好。我不知道我在这里错过了什么。这与引导程序或使用本地存储有关吗?因为这是我发现我的代码和 jsFiddle 之间的唯一区别。请帮忙。

【问题讨论】:

    标签: jquery angularjs twitter-bootstrap autocomplete local-storage


    【解决方案1】:

    这不是本地存储http://jsfiddle.net/leewinter/gxvsqkuy/2/ 或许可以试试你的例子,看看是否可以复制?

    angular.module('MyModule', []).directive('autoComplete', function($timeout) {
    var testObject = { 'one': 1, 'two': 2, 'three': 3 };
    localStorage.setItem('testObject', JSON.stringify(testObject));
    if (localStorage.getItem('testObject') != undefined) {
        return function(scope, iElement, iAttrs) {
                iElement.autocomplete({
                    source: scope[iAttrs.uiItems],
                    select: function() {
                        $timeout(function() {
                          iElement.trigger('input');
                        }, 0);
                    }
                });
        };
    }});
    

    你用的是IOS吗?可以试试下面solution

    $("#input").autocomplete({
    open: function(event, ui) {
        $('.ui-autocomplete').off('menufocus hover mouseover mouseenter');
    }});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多