2014-05-05 61 views
2

基本上可以停止元素,在我的情况下,button元素不会让焦点集中在javascript中?防止元素变得焦点

我想要实现的是一个AngularJS指令,它在获取焦点时会显示一些按钮/ UI元素。使用ng-focusng-blur指令很容易实现,但是当我尝试点击任何按钮时,按钮获得焦点以便div不再具有焦点,ng-blur被触发并且按钮被隐藏。

我希望按钮保持可见状态,同时指令元素具有焦点并可点击。

Here is a Plunker显示此行为。

在此先感谢。

回答

6

我觉得这本来是简单的不使用任何聚焦元素如<button> S和<a>锚标记。您可以使用不可调焦的div,并将其设置为按钮,将该事件绑定到该div,并且它应该可以解决您的问题。你获得了不可调整的优势,并且仍然可以在你的特定元素中追加你的事件。

focusableDiv指令

变化

<button class="btn" ng-click="add()" ng-show="isFocused">Action</button> 

<div class="btn btn-primary" ng-click="add()" ng-show="isFocused">Action</div> 

注:上述改动假设你正在使用的引导,CSS风格你<div>按钮

小号这是plunker update

+0

正是我们在下面提出的。简单和有效,只需要注意添加是你可能想删除'用户选择'风格(和变化),所以在多次点击时,默认的文本选择行为被抑制。 – adamK

+0

据我所知,bootstrap-css按钮'btn'的第一个'user-select'被抑制了。 – ryeballar

+0

他们正确地做到了,对不起,我指的是其他读者可能没有使用Bootstrap,并且想要相同的功能。 – adamK

0

你知道....你不必真的点击按钮。 。

'<button class="btn" ng-focus="add()" ng-show="isFocused">Action</button>' + 

您plunkr的叉:http://plnkr.co/edit/7uoOF5HS0yrsW5kquodA?p=preview

+0

这是聪明的,但焦点仍然从div元素中删除,并且按钮(s)消失,我希望它保持可见,所以例如该按钮可以多次交互,并且只隐藏时主要因素失去了重点。 – adamK

+0

哈哈好吧,不知道这是否适合你。我将不得不多思考这个问题......这有点棘手。 – aet

+1

按照你的思路,如果我只是制作UI元素的基本块元素,即'div'而不是'button',它们就不会获得焦点,它应该可以工作。简单!感谢你的灵感哈哈! – adamK

-2

功能loseFocus(){的document.getElementById( “myButton的”),模糊(); }

//调用函数

检查W3Schools的 - > JavaScript的