javascript - 在执行前一个事件的处理程序之前检查下一个事件以隐藏自动完成

标签 javascript html angularjs

我有一个 Angular 输入字段,它的工作方式类似于自动完成下拉菜单。

我在输入与现有数据匹配时显示建议。失去焦点时,我必须隐藏下拉菜单。

<input type="text" 
   ng-model="ctrl.inputs.name"
   ng-blur="ctrl.autocomplete.visible = false"
   ng-keyup="ctrl.handleAutocomplete()"/> <!-- logic for suggestions -->

<div ng-repeat="name in ctrl.names" data-name"{{name.name}}" 
   ng-click="ctrl.setName($event)">
    {{name.name}}
</div>

现在在键入输入时,这工作正常并且我得到了一个项目列表。 理想情况下,您单击列表中的一个项目以在 Controller 中设置它。那时我已经在 Controller 中隐藏了建议 - ctrl.autocomplete.visible = false

但是在选项的 ng-click 之前,输入时调用了 ng-blur,它隐藏了下拉列表。所以我从来没有接触过 ng-click。删除 ng-blur 工作正常,但我需要在输入焦点丢失时隐藏下拉列表。 帮助表示赞赏。

最佳答案

删除

ng-blur="ctrl.autocomplete.visible = false"

来自

<input type="text" 
   ng-model="ctrl.inputs.name"
   ng-blur="ctrl.autocomplete.visible = false"
   ng-keyup="ctrl.handleAutocomplete()"/>

并设置

ctrl.autocomplete.visible = false;

Controller 文件中 ctrl.setName($event) 方法的最后。

关于javascript - 在执行前一个事件的处理程序之前检查下一个事件以隐藏自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683268/

相关文章:

javascript - 如何在 javascript 或 jQuery 中设置 select2(版本 3.5)下拉列表的 selectedindex

javascript - 如何在图像点击时生成随机数

javascript - JavaScript 如何在内部存储空值?

javascript - 如何在选中复选框时获取不同表中的表行数据?

html - 用于触摸设备的 HTML5 游戏的库和教程?

javascript - 我应该在 html 中插入什么以便在代码验证器中可以使用?

javascript - 在选中同一行中其他单元格的其他复选框时禁用行中 html 表格单元格中的复选框

javascript - 我如何在前面每 1 小时做一些事情?

jquery - 如何在 URL 更改时为 div 赋予 ontouch 效果

javascript - 具有授权过程的 AngularJS 路由