2011-01-01 12 views
6

मुझे कैसे पता चलेगा कि वर्तमान में कोई टेक्स्टबॉक्स (या टेक्स्टरेरा) फ़ोकस में है या नहीं? मुझे यह जानने की परवाह नहीं है कि यह कौन सा है, मुझे सिर्फ यह जानने की जरूरत है कि कोई फोकस में है (इसमें कर्सर है)। जावास्क्रिप्ट और jquery के साथ मैं यह कैसे करूँगा?खोजें कि कोई टेक्स्टबॉक्स वर्तमान में चुना गया है

उत्तर

15

जब से तुम document.activeElement पाया है, तो आप अपने nodename देख सकते हैं।

if (document.activeElement.nodeName == 'TEXTAREA' || document.activeElement.nodeName == 'INPUT') { 
    // .... 
} 

ऐसा कुछ।

+0

धन्यवाद, लेकिन मैं jQuery ऑब्जेक्ट को document.activeElement से कैसे प्राप्त करूं? –

+1

$ (document.activeElement) –

+0

यह संपादन योग्य HTMLDivElements की जांच नहीं करता है। नीचे मेरा जवाब देखें। –

2
$('#yourTextAreaID:focus'); 

काम नहीं करेगा। जब तत्व ध्यान केंद्रित प्राप्त करता है :) लेकिन

$('#yourTextAreaID').focus(function(){ 
    // do something 
}); 

//do something कोड निष्पादित करें होगा।

+0

ठीक है, लेकिन किसी भी समय पर (नहीं जरूरी जब उपयोगकर्ता एक पाठ बॉक्स पर क्लिक करना) मैं कैसे की जाँच करेगा अगर कोई टेक्स्टबॉक्स फोकस कर रहा है? –

+0

यह देखते हुए कि ओपी परवाह नहीं है "यह कौन सा है," मैं चयनकर्ता को संशोधित करने का सुझाव दूंगा: '$ ('textarea: फोकस, इनपुट: टेक्स्ट: फोकस') ...' –

+0

मुझे अभी दस्तावेज़ मिला है। activeElement। मैं कैसे जांचूँगा कि यह टेक्स्टबॉक्स या टेक्स्टरेरा है या नहीं? –

1
$('#target').focus(function() { 
    alert('Handler for .focus() called.'); 
}); 

भी प्रयास करें:

alert($("*:focus").attr("id")); 

http://jsfiddle.net/4KVvV/

+0

@lonesome के रूप में ऊपर बताया गया है: होवर असली jquery चयनकर्ता नहीं है। मैंने सोचा कि यह भी था, लेकिन जब मैंने प्रलेखन की जांच की, तो मुझे इसका उल्लेख नहीं मिला। – JakeParis

6

ठीक है, बस इसे समझ लिया। यहाँ मैं क्या किया है:

function checkFocus() { 

    if ($(document.activeElement).attr("type") == "text" || $(document.activeElement).attr("type") == "textarea") { 

    //Something's selected 

    return true; 

} 

} 
+0

कोई इसे उत्तर के रूप में चिह्नित करता है, यह कहता है कि मुझे 2 दिन का इंतजार करना है। :) –

+2

आप अकेले हैं जो * इसे उत्तर के रूप में चिह्नित कर सकते हैं। साथ ही, अपने जवाब, विशेष रूप से कोड नमूने को प्रारूपित करने के तरीके के मार्गदर्शन के लिए, [स्टैक ओवरफ़्लो मार्कडाउन हेल्प-पेज] (http://stackoverflow.com/editing-help/) पर एक नज़र डालें। –

+0

ध्यान दें कि यह सभी आधुनिक ब्राउज़रों पर काम करेगा, लेकिन यह * पुराने * कई पुराने ब्राउज़र पर काम नहीं करेगा। इसे दूर करने के लिए एक तकनीक के लिए [इस उत्तर] पर एक नज़र डालें (http://stackoverflow.com/questions/1009777/determining-which-element-has-focus/1009787#1009787)। – lonesomeday

2

संपादन योग्य HTMLDivElements का एक चेक द्वारा स्वीकार कर लिया जवाब विस्तार:

if (document.activeElement.nodeName == 'TEXTAREA' 
    || document.activeElement.nodeName == 'INPUT' 
    || (document.activeElement.nodeName == 'DIV' 
     && document.activeElement.isContentEditable)) { 
    // … 
} 
संबंधित मुद्दे