2013-01-21 20 views
5

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

$(document).on('keydown', function (e) { 
    if (!$('#test').is(':visible')) { 
     //######## IF (every input is not active....) { 
     if (65 <= e.keyCode && e.keyCode <= 90) { 
      $(elem).fadeIn(); 
      $('#textarea').val(''); 
      $('#textarea').focus(); 
      $('#textarea').val(temp); 
     } 
    } 
}); 

धन्यवाद। यदि आवश्यक हो तो मैं उसी आईडी पर पेज पर हर दूसरे टेक्स्टरेरा दे सकता हूं।

+0

के लिए इस का उपयोग कर BTW आप नहीं "एक ही आईडी दे" कर सकते हैं सिफारिश करने के लिए चाहते हैं - डुप्लिकेट आईडी अमान्य HTML हैं और अपने जेएस/jQuery केवल पहले तत्व पकड़ लेंगे। –

उत्तर

13

उपयोग jQuery के focus pseudoselector

if ($('input:focus').length > 0) { return; } 

या अपने कोड उदाहरण

if ($('input:focus').length == 0) { ... } 
+0

@ FabrícioMatté - हाँ, सहमत हो गया। लेकिन मुझे लगता है कि नए डेवलपर्स के लिए यह स्पष्ट रूप से बताता है कि क्या हो रहा है। मेरी कोड त्रुटियों को ठीक करने के लिए धन्यवाद। – mrtsherman

+0

कोई समस्या नहीं, बस एक साइड नोट के रूप में जोड़ा गया - मैं व्यक्तिगत रूप से छोटी स्थितियों को पसंद करता हूं 'अगर ($ (' इनपुट: फोकस ')। लंबाई) 'और' अगर (! $ (' इनपुट: फोकस ') लंबाई। ' जो टाइप करने और पढ़ने के लिए कम अक्षर लेते हैं, साथ ही सभी डेवलपर्स को सीखना होगा कि किसी बिंदु पर सच्चाई और झूठी मूल्यों से कैसे निपटना है। लेकिन हाँ, यह ज्यादातर व्यक्तिगत वरीयता है। '=]' –

+0

यह अद्भुत काम किया। बहुत बहुत धन्यवाद। मुझे डर था कि मुझे पृष्ठ पर प्रत्येक टेक्स्ट फ़ील्ड निर्दिष्ट करना होगा जो वास्तव में अनावश्यक होगा। एक बार फिर धन्यवाद। – centree

3
jQuery के साथ

के लिए, तुम सब करने की ज़रूरत इनपुट या पाठ क्षेत्र तत्वों को ध्यान में वर्तमान में कर रहे हैं के लिए खोज है।

if ($('input:focus, textarea:focus').length === 0) { 
    // put some code here... 
} 
5

आप उपयोग कर सकते हैं jQuery के .is() और document.activeElement इस तरह।

var targetInput = $('#myInput'); 

if(!targetInput.is(document.activeElement)) { 
    alert('Typed while not focused on #myInput!'); 
} 

JSFiddle

+0

+1 लेकिन याद रखें कि [यह केवल HTML5 है] (https://developer.mozilla.org/en-US/docs/DOM/document.activeElement)। –

+1

@ जोसेफ सिल्बर क्या? यह आईई 4 समर्थन कहते हैं। * भ्रमित * –

+0

@ FabrícioMatté - मुझे भी। ** यह विशेषता इन-डेवलपमेंट एचटीएमएल 5 विनिर्देश का हिस्सा है। ** –

1

मैं किसी भी रूप आदानों

if ($(':input:focus').length) { ... }
संबंधित मुद्दे