2013-02-28 18 views
7

görmezden gelirse, kullanıcı silme düğmesine bastığında bir işlem gerçekleştirecek bir işlevi (aşağıda) çağırıyorum. İyi çalışıyor ama bir sayfa yazarken (bir girdi içinde veya bir textarea içinde) değil, sadece sayfada yapmam gerekiyor. not fire içinjQuery kilitleme ancak metin kutusunda

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

Herhangi bir fikir how I can amend the above kullanıcı in bir input veya textarea olur? peşin

sayesinde

Dave

cevap

14

onay evt.target tip:

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

İyi çalışıyor, hızlı cevap için teşekkürler. Yanıt olarak işaretlendi – dhardy

+0

@dhardy Yardım ettiğine sevindim – karaxuna

0

Bir küresel değişkeni olması ve metin kutusu üzerine odaklanmış olduğunda şey ayarla ve reset olabilir Bulanık. Böyle bir şey: böyle

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

    goDoSomething(); 
} 
}); 
0

deneyin sometihing:

var textboxSelected = false; 

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

Sonra onKeyDown olay değişken işlevsellik geri kalanını gerçekleştirmeden önce false olarak ayarlanır olmadığını kontrol

$(window).keydown(function (evt) { 
    if(evt.target != $('input') && evt.target != $('textarea')){ 
    if (evt.which == 46) { // delete 
     goDoSomething(); 
    } 
    } 
}); 
İlgili konular