2016-03-05 57 views
0

有没有办法让div无法获得焦点?这是工具栏按钮的正常行为。让div无法获得焦点(如工具栏按钮)

让我们假定焦点放在文本输入上。点击div不应该使文本输入焦点丢失。

这是一个基本的设置:

HTML:

<div id="toolbar-button"> 
    Button 
</div> 
<input id="input"> 

我试着贴在div的mousedown事件重新聚焦,但是它做 ES不起作用:

document.getElementById('toolbar-button').addEventListener('mousedown', function(event) { 
    document.getElementById('input').focus(); 
}) 

使用一个click事件正在重新获得点击的焦点,但随后鼠标按钮仅关闭时焦点仍然丢失(并且点击事件将会我之后发生的事情没有被授予)。

这里是笔:

http://codepen.io/anon/pen/oxjPva

我知道,一个可以让要素无法通过设置tabindex = "-1"接收焦点上标签。但这不适用于鼠标事件。

回答

0

此行添加到您的收听:

event.preventDefault(); 

这将防止重点要在按键设置,默认动作是按下按钮时。

+0

太好了。这似乎工作。我想按钮的样式必须通过JavaScript来完成,因为像':active'这样的css事件将不起作用。 – Daniel

+0

好吧,我可能会建议您使用按钮来将焦点设置到文本字段而不是div,如果您想要按钮样式,并且使用标签,如果点击它会自动将焦点设置在输入上,请参阅更新Codepen:http://codepen.io/anon/pen/GZpXqK – Emil

+0

这是行不通的。当按钮上的鼠标按钮被按下时,焦点会丢失,而不会释放它离开按钮并被释放到外面。 – Daniel