2014-09-28 26 views
1

我有一個jsFiddle在這裏 - http://jsfiddle.net/hL7Lnf3a/3/ - 與select下拉菜單的文件。從菜單中選擇文件時,輸入.change()處理程序。我想讓用戶以某種方式告訴我他們何時選擇一個文件,而不是加載文件,他們想要刪除它。這可以通過按住Shift鍵或其他鍵來單擊菜單中的條目,或者通過右鍵單擊而不是左鍵單擊該條目。但瀏覽器(我正在運行Chrome)似乎沒有爲.change事件設置任何這些指示。也就是說,當change事件觸發時,我看不到e.shiftKeye.which被設置在事件對象中。有沒有人看到一種方式讓用戶告訴我他們是否要加載或刪除他們選擇的文件?點擊Select元素時傳遞一個選項

感謝?

回答

1

您可以爲shift鍵另有一個監聽器(keyup和keydown)。

使用一個標誌變量來表示按鍵是否被按下,然後在你的更改監聽器中檢查該標誌變量的狀態。

事情是這樣的:

var shiftPressed = false; 

$(document).keydown(function(e){ 
    if (e.keyCode == 16) 
     shiftPressed = true; 
}) 

$(document).keyup(function(e){ 
    if (e.keyCode == 16) 
     shiftPressed = up; 
}) 

見這裏:http://jsfiddle.net/hL7Lnf3a/5/(嘗試改變選擇項有和沒有按住shift)


一個版本使用自定義的下拉菜單: http://jsfiddle.net/g8ptz2eb/11/

+0

是的,這是向正確方向邁出的一大步。有趣的是,當您單擊下拉菜單時,Shift鍵的狀態會被捕獲,並且在菜單被刪除時無法更改。你可以在這裏看到更好的; http://jsfiddle.net/g8ptz2eb/9/。如果用戶可以在菜單關閉後按下Shift鍵並在.change處顯示狀態,這將是理想的。 – Steve 2014-09-28 17:18:15

+0

是的,很好。恐怕我們在這裏進入了瀏覽器的領域,所以Shift鍵在技術上不再被壓入文檔內部,而是在更高層次上 - 瀏覽器,更準確地說是瀏覽器的選擇框(注意你可以用鍵盤控制它的一次它被打開並且有焦點)。爲避免這種情況和可能出現的跨瀏覽器問題,我強烈建議您構建自己的簡單下拉菜單,而不必再擔心這一點。 – Shomz 2014-09-28 17:51:22

+0

可能是這樣的:http://jsfiddle.net/g8ptz2eb/11/ – Shomz 2014-09-28 18:07:24

相關問題