2012-10-10 54 views
4

我試圖檢查一個鍵是否沒有關注任何類型的字段。Javascript或jquery:無焦點獲取鍵輸入

目標是讓用戶按左右箭頭來到下一張圖片。他們不需要點擊任何文本字段或任何東西......只需按這些鍵滾動到下一個或最後一個圖像。

像:

function keyEvent(e) { 
    if(e.keyCode == 39) { 
    run some code to get next image 
    } 
    else if (e.keyCode == 37) { 
    run some code to get last image 
    } 
} 

好像jQuery的總是需要一個「選擇」,好像我需要將其綁定到一個領域或某事。

$('input[type=text]').on('keyup', function(e) {  
    if (e.which == 39) { 

    run some code 
} }); 

任何想法?

編輯:

我在viewimage.php文件體這個腳本...的JavaScript仍然沒有在頁面加載運行:

<script type="text/javascript"> 
$(document).ready(function() { 
    $(document).keydown(function (e) { 
    if (e.which == 39) { 
     alert("39"); 
    } 
    }); 
}); 
</script> 

謝謝

+0

這個問題似乎對我很模糊。第一條語句意味着您試圖在不破壞文本輸入功能的情況下使箭頭鍵在頁面之間移動,但您在下面發佈的代碼完全相反。無論如何,你有足夠的答案使它能夠同時工作。 –

回答

6
$(document).ready(function() { 
    $(document).keydown(function(e) { 
     e.preventDefault(); 
     if (e.which == 13) { 
      // Whatever... 
     } 
    }); 
}); 
+0

我在page.php模板裏面有

2

添加聽取文件。

$(document).on("keyup", function (e) { 
    console.log(e.keyCode); 
});​ 
+0

不知道我是否是唯一正確地閱讀該問題的人,或者是唯一一個閱讀錯誤的人,但是:「如果某個鍵被按下**而沒有關注任何類型的字段**」,如果在文檔級別綁定處理程序,任何輸入字段上的按鍵都會起泡到文檔級別。 –

2

使用$(document).on()$(window).on()

+0

令人驚訝的是,這比沒有'.keypress','.keyup'或'.keydown'方法來處理這些事件更好地支持頁面。 – cjbarth

2

綁定KEYUP(或按或向下)的身體,文件或窗口。使用它們中的任何一種或全部(皮帶+吊帶)。

$('body',document,window).on('keyup', function(e) { 
    if (e.which == 13) { 
     e.preventDefault(); 
     console.log('enter'); 
    } 
});​ 
2

首先,按鍵更安全,我認爲。我聽說一些瀏覽器錯過了keyup和keydown。

我明白了...... keydown是最安全的。

的回答你的問題是將文檔綁定:

$(document).on('keydown', function(){ 
    ... 
}); 
+1

這是相反的方式。 Firefox不會觸發方向鍵的按鍵事件,但是所有瀏覽器都會爲它啓動keydown/keyup。 –

2

我想檢查是否沒有焦點被壓在任何類型的 區的一個鍵。

如果field你的意思是輸入/ textearea /選擇元素,所有你需要做的就是附加一個處理程序文件,並取消上述處理程序,如果事件目標是一個輸入元素:

$(document).on('keyup', function(e) { 
    if ($(e.target).is('input, textarea, select')) return; 
    if (e.which == 39) { 
     console.log('move foward'); 
    } 
}); 

Fiddle

相關問題