2013-05-03 135 views
1

我有一個事件,我想在每當觸發RSPACE被按下時,除了在輸入字段中時。防止在選擇輸入框時觸發鍵盤事件

具體而言,我很擔心<input id='nameInput' type='text'>,我在動態創建時點擊div並刪除onchange/onblur。這就是爲什麼我試圖檢查if(!$('#nameInput')),但$('#nameInput')是一個jQuery對象,所以它的布爾值總是true(因此!$('#nameInput') == false)。

$(window).bind('keyup', 
    function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if(code == 32 || code == 82){ 
     if(!$('#nameInput')){ 
     roll(); 
     } 
    } 
    } 
); 

我有利用在輸入字段的聚焦狀態越來越設置一個全局布爾變量的解決方案,但我想這並不需要一個全局變量,如果有可能的解決方案。

有沒有方法可以確定哪些元素當前有焦點?

+0

謝謝@Alexey,不知道如何讓這些看起來都很漂亮。 – mduleone 2013-05-03 01:34:08

回答

3

您可以使用document.activeElement來了解當前有哪些焦點。

if (!$(document.activeElement).is('input, textarea')) { 
    roll(); 
} 

您還可以使用:focus選擇器。

if (!$(':focus').is('input, textarea')) { 
    roll(); 
} 
+0

這是完美的!謝謝! – mduleone 2013-05-03 01:33:26

+0

再次感謝,我去了: var active = $(document.activeElement); if(active [0] === $('#nameInput')[0]){ return; } roll(); – mduleone 2013-05-03 01:38:22

+0

@mduleone,你不想相反嗎?當'nameInput'沒有被聚焦時,然後滾動?此外,您可以使用'$(document.activeElement).is('#nameInput')' – plalx 2013-05-03 01:44:16

相關問題