2013-02-28 12 views
7

我正在調用一個函數(下),如果用戶按下刪除按鈕,將執行一個操作。它工作正常,但我需要只在頁面上做,而不是當用戶輸入時(在輸入內或在textarea內)。jQuery的keydown,但如果在文本框中忽略

$(window).keydown(function (evt) { 
    if (evt.which == 46) { // delete 
     goDoSomething(); 
    } 
}); 

任何想法how I can amend the abovenot fire如果用戶是ininputtextarea

由於提前,

戴夫

回答

14

檢查evt.target的類型:

$(window).keydown(function (evt) { 
    if (evt.target.tagName.toLowerCase() !== 'input' && 
     evt.target.tagName.toLowerCase() !== 'textarea' && evt.which == 46) { // delete 
     goDoSomething(); 
    } 
}); 
+0

工作正常,感謝您的快速回復。標記爲答案 – dhardy 2013-02-28 11:40:26

+0

@dhardy我很高興它有幫助 – karaxuna 2013-02-28 11:41:07

0

你可以有一個全局變量,並將其設置爲東西時,一個文本框上集中並重置在模糊。事情是這樣的:

var textboxSelected = false; 

$(":input").focus(function() { 
    textboxSelected = true; 
}); 
$(":input").blur(function() { 
    textboxSelected = false; 
}); 

然後在你的onKeyDown事件檢查變量是否正在開展的其他的功能之前設置爲false:

$(window).keydown(function (evt) { 
if (evt.which == 46 && textboxSelected == false) { 

    goDoSomething(); 
} 
}); 
0

嘗試sometihing這樣的:

$(window).keydown(function (evt) { 
    if(evt.target != $('input') && evt.target != $('textarea')){ 
    if (evt.which == 46) { // delete 
     goDoSomething(); 
    } 
    } 
}); 
相關問題