2014-07-01 69 views
0

所以我想在頁面上按空格鍵時調用一個函數。唯一的問題是,如果函數集中在輸入欄中,則不能調用該函數。任何想法如何做到這一點?keydown監聽器的身體

此代碼的工作,但是,着眼於輸入欄中

$(document).keydown(function(e){ 
    if (e.keyCode==32) { 
    stopplay(); 
    } 
}); 
+1

什麼是「輸入欄」?那是瀏覽器的地址欄嗎? – MeLight

+0

你的代碼正在工作,請檢查這個小提琴http://jsfiddle.net/d3cv5/ –

回答

0

那麼你可以看看,看看那裏的事件起源仍是起火的功能:

$(document).keydown(function(e){ 
    if(!$(e.target).is("input")) { 
     // it's NOT from an input! 
    } 
}); 
0

使用此代碼

$(document).keydown(function(e){ 
    if (e.keyCode==32 && !$(e.target).is("input")) { 
    stopplay(); 
    } 
}); 
2

更新到此:

if (e.keyCode==32 && !$(e.target).is(':input')) { 
stopplay(); 
} 

:input是方便,如果你有其他的輸入elems的像select, textarea etc它選擇所有的輸入元素。

1

Demo

使用event.stopPropagation()方法,防止起泡的keydown。

$(':input').keydown(function(e){ 
    e.stopPropagation(); 
}); 

更新:

如果你有以上適用於其他輸入元素,使用$(':input')選擇。

+1

Downvoter care to comment? – Popnoodles

+1

我以爲你沒有完全讀過這個問題。我看了一下小提琴,並取消了downvote。 – r3wt