2016-03-05 56 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