2013-02-28 3 views
7

में मैं अनदेखा करता हूं तो मैं एक फ़ंक्शन (नीचे) कॉल कर रहा हूं जो उपयोगकर्ता हटाए जाने पर बटन दबाएगा। यह ठीक काम कर रहा है लेकिन मुझे केवल पृष्ठ पर ऐसा करने की आवश्यकता है, न कि जब कोई उपयोगकर्ता टाइप कर रहा हो (इनपुट के अंदर या टेक्स्टरेरा के अंदर)।jQuery कीडाउन लेकिन अगर टेक्स्ट बॉक्स

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

कोई भी विचार how I can amend the abovenot fire यदि उपयोगकर्ता in एक input या textarea है?

अग्रिम धन्यवाद,

डेव

उत्तर

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

+0

@ dhardy के रूप में चिह्नित मुझे खुशी है कि इससे मदद मिली – karaxuna

0

आप एक वैश्विक चर है और कुछ के लिए सेट है जब एक पाठ बॉक्स पर ध्यान केंद्रित कर रहा है और इसे रीसेट कर सकता है धब्बे पर। कुछ इस तरह:

var textboxSelected = false; 

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

फिर अपने onkeydown घटना में जाँच चर कार्यक्षमता के बाकी बाहर ले जाने से पहले गलत पर सेट है या नहीं: इस तरह

$(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(); 
    } 
    } 
}); 
संबंधित मुद्दे