忽略某些元素的ng-blur事件
Ignore ng-blur event for certain elements
我有一个搜索字段,下面有一个建议框。当我输入搜索字段时,建议就会出现在它的下方。当我点击字段外的某个地方时,我希望建议框消失。我希望能够点击建议并进行搜索。
<input ng-blur="suggestionBox.hide()" ng-model='someModel' />
<div class='suggestion-box'>
<ul>
<li ng-repeat="suggestion in suggestions" ng-click="someFunction()">suggestion.name</li>
</ul>
</div>
问题是,由于ng-blur
, ng-click
没有被触发——建议框变得隐藏,但点击事件没有被触发。我试过ng-click="$event.preventDefault(); someFunction()"
,但它不起作用。我试图在hide()
方法上设置超时,它有效,但我必须设置一个大超时,如200ms,一般我认为这是一个糟糕的解决方案。
http://plnkr.co/edit/9BR7Sv2502S87HO56Ofp?p=preview
我所做的一件事是在我想要点击的项目上提供ng-mousedown和ng-mouseup函数,同时绕过onBlur。我还没找到别的办法。在我的例子中,它是一种取消编辑按钮。
- 在鼠标下,我设置了一个标志"inWhateverMode = true"。鼠标下移很重要,因为它会在模糊之前触发。
- 在模糊处理程序中,检查是否在whatevermode。
- 在鼠标上清除任何标志…完成预期的操作。
当想要允许用户单击按钮,然后将光标从初始按钮移开,然后松开而不会产生负面影响时,这很方便。比如无意中点击了删除按钮。
更新Plunk: http://plnkr.co/edit/raJzMor9ci8dLgzXuQII?p=preview
ng-mousedown='startToShowItem(item)' ng-mouseup='show(item)'
好的,我想这就是你要找的:
http://plnkr.co/edit/r3SlOXg6VuTZDABPCAxq?p =
预览函数运行,然后下拉菜单消失?
美元范围。Show = function(item) {美元的范围。Hidden = true;警报(项)
};
修改HTML:
<input ng-model='search' />
<div ng-hide='hidden' style='border:1px solid black'>
相关文章:
- ng更改事件不适用于Dropdown
- 如何刷新列表框内容onclick或blur事件
- AngularJs的ng-click$事件将子元素作为目标传递
- 输入字段未使用 ng-keydown 事件更新
- angularjs的ng keydown事件,按下哪个键的值,然后显示按下的键的值
- Angular:$scope有效,但“;控制器为“;不触发ng更改事件
- ng-click事件不适用于Angular JS中的链接
- 当 ng-change 事件发生时,函数不会在角度 js 中调用
- AngularJS + NG-Grid 将 row.column.field 传递到 ng-click 事件中
- jQuery blur 事件在 Chrome 中触发了两次
- 如何防止在表单中使用多个按钮时触发提交/ng-提交事件
- 如何在角度 UI 开关中获得 ng-change 事件
- AngularJS ng-click事件在ng-repeat中未触发
- 将当前元素发送到 ng-change 事件
- ng-click事件在ionic中不起作用,但它在Angular中起作用
- 检测复选框是否在 Angular.js ng-change 事件中处于选中状态
- “blur”事件是否仅针对 HTML 表单对象触发
- 使用 angularjs ng-blur 并调用 javascript
- ng-focus和ng-blur事件在Angularjs中未触发
- 忽略某些元素的ng-blur事件