【问题标题】:unable to select a name from autocomplete list无法从自动完成列表中选择名称
【发布时间】:2019-01-31 01:25:15
【问题描述】:

我正在显示文本框的自动完成列表。

当用户在textbox 中键入某个字符时,它会显示自动完成列表,用户可以从中选择名称,但如果用户不想从自动完成列表中选择任何名称并在列表外单击,则自动完成列表 消失,代码如下:

#country1:not(:focus)+.list-group {
  display: none;
}

但我的工作功能已损坏,不允许从任何文本框中的自动完成列表中选择名称。

演示:http://plnkr.co/edit/y4UNoYtuJFYhjpN0mtWS?p=preview

CSS:

#country1:not(:focus)+.list-group {
  display: none;
}

#country2:not(:focus)+.list-group {
  display: none;
}

#country3:not(:focus)+.list-group {
  display: none;
}

【问题讨论】:

    标签: css angularjs twitter-bootstrap


    【解决方案1】:

    如果我理解正确:

    • 并在完整的method()中添加该字段的值到列表中
    • 使用 ng-mousedown 代替 ng-click(在失去焦点之前执行单击)

       $scope.complete = function (string, labelSel) {
              var output = [];
      
              if(string !== "")
                output.push(string); // push your string at first 
      
              angular.forEach($scope.countryList, function (country) {
                  if (country.toLowerCase().indexOf(string.toLowerCase()) >= 0) {
                      output.push(country);
                  }
              });
              //... etc
        }
      

    http://next.plnkr.co/edit/rlYx5oXTqbfBloid5Jue?p=preview

    【讨论】:

    • 它破坏了我现有的功能..当用户在文本框中键入一个字符时,它会显示自动完成列表,当用户单击列表或 esc 按钮外部时,我想隐藏显示的自动完成列表,但使用您的代码,如果用户不想从列表中选择名称,则当用户单击自动完成列表的一侧时,不允许隐藏列表。任何输入?
    • 好的。实际上,焦点在单击执行之前已被移除。 ng-blur 和 ng-focus 也一样
    • 哦,好的。您能否编辑您的代码并为此提供一些输入..@Stys
    • 好的,我发现使用 ng-mousedown 代替 ng-click,next.plnkr.co/edit/rlYx5oXTqbfBloid5Jue?p=preview&preview
    • 在post上完成了,对于“esc按钮”,我认为你必须使用keydown事件
    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2021-12-08
    • 2014-12-26
    • 2012-03-09
    • 2014-01-07
    相关资源
    最近更新 更多