2014-02-05 97 views
0

如何找到一個HTML元素(可以說一個select-tag)通過鼠標點擊,鍵盤或JavaScript函數獲得焦點?html元素通過鼠標或鍵盤獲得焦點

<select onfocus="foo(event)"></select> 

<script> 
function foo(e) { 
    if (e.??? == 'mouse') { 
     //do something 
    } 
    else if (e.??? == 'keyboard') { 
     //do something different 
    } 
} 
</script> 

我也試過一個onclick事件添加到元素,但onfocus事件觸發第一次。

+0

請嘗試以下方法鏈接:http://stackoverflow.com/questions/6148359/determine-focus-event-click-or-tabstop –

回答

1

使用document.activeElement,它在所有主流瀏覽器中都受支持。它可以給你當前的活動元素。

編輯

哎呀,我想我誤解你的問題。要識別鼠標或鍵盤或編程

對於編程 如果(e.hasOwnProperty(「originalEvent」)){手動觸發 //焦點事件。 }

區分基於鍵盤和鼠標的焦點事件 您必須通過添加額外的keydown事件來破解它並理解。你無法像你想要的那樣區分它。

1

我不相信有任何本地的方式來看看元素如何得到它的焦點(糾正我,如果我錯了!)。

但是,您可以在點擊鼠標時進行存儲,使用鍵盤時進行存儲,然後根據最後一個活動狀態進行響應。

var inputState = null; 

document.addEventListener("click", handleClick); 
document.addEventListener("keyup", handleKey); 

function handleClick() { 
    inputState = "mouse"; 
} 

function handleKey() { 
    inputState = "keyboard"; 
} 

function foo() { 
    if (inputState === "mouse") { 
     // mouse code 
    } else if (inputState === "keyboard") { 
     // keyboard code 
    } else { 
     // Function was called directly 
    } 

    // Reset input State after processing 
    inputState = null 
} 

這可能需要一些調整,但我希望你可以用它來找到正確的答案。

編輯:

我的回答是香草JS的解決方案,如果你有機會到jQuery的你可能要調查clickkeyup事件處理程序。

0

如果你想檢查wheather <選擇>通過鍵盤或鼠標點擊, 你可以使用鼠標按下()和按鍵()事件

$('select').mousedown(function(e){ 
    //your code on mouse select 
}); 

$('select').keypress(function(e){ 
    //your code on key select 
}); 
相關問題