2013-04-16 10 views
9

फोकस को एक टेक्स्टबॉक्स पर कैसे रखा जाए? भले ही आप किसी ब्राउज़र में कहीं भी क्लिक करें।किसी तत्व को फोकस खोने से कैसे रोकें?

$("#txtSearch").focus(); 
+6

मैं कॉफी के बहुत सारे अनुमान लगा रहा हूँ नहीं है एक स्वीकार्य जवाब? क्या आप फॉर्म जमा करने के लिए उपयोगकर्ता को एंटर दबाएंगे? – lucuma

+0

नहीं, वह इसे छूने वाला है क्योंकि मैं एक टैबलेट –

उत्तर

3
$("html").click(function(){ 
    $("#txtSearch").focus(); 
}); 

लाइव डेमो:http://jsfiddle.net/QhaLY/

+0

का उपयोग कर रहा हूं * तकनीकी रूप से * यदि आप बहुत तेज़ हैं तो अभी भी '# txtSearch2' टाइप करना संभव है। – h2ooooooo

+1

@ h2ooooooo: या यदि आप 'टैब' –

+1

@ h2ooooooo दबाते हैं तो मैं डेविड से सहमत हूं। मेरा उत्तर कहीं और क्लिक करने से रोकता है, लेकिन यह टैब को रोकता नहीं है। Konstantin का जवाब सबसे अच्छा समाधान है। – Curt

1
$('body').click(function(){$("#txtSearch").focus();}); 
+0

यह सही धन्यवाद आदमी काम करता है, बहुत सराहना की –

18

आप textbox की blur घटना की सदस्यता और एक छोटे से समय समाप्ति के साथ ध्यान केंद्रित करने को पुन: स्थापित करने की जरूरत है:

$('#txtSearch').blur(function (event) { 
    setTimeout(function() { $("#txtSearch").focus(); }, 20); 
}); 

इस तरह आप पृष्ठ पर किसी भी अन्य तत्व की घटनाओं की सदस्यता लेने पर भरोसा नहीं करते हैं। यदि आप body click या html click की सदस्यता लेते हैं, तो यह कोई नहीं होगा यदि कोई अन्य तत्व click ईवेंट के प्रसार को रोकता है, तो यह textbox से टैबबिंग करते समय भी काम नहीं करेगा।

उदाहरण:

<!-- I will not propagate my click to top level DOM elements --> 
<button id="button">Click me</button> 

<script> 
$('#button').click(function (event) { 
    event.stopPropagation(); 
}); 
</script> 
+0

+1 यह एकमात्र उत्तर है जो फोकस से बाहर टैब्बिंग जैसी घटनाओं को संभालता है। –

+0

ब्लर वह घटना है जो किसी तत्व पर फोकस खो जाने पर आग लगती है – lucuma

+1

@ कर्ट मैंने कुछ स्पष्टीकरण शामिल किया कि क्यों क्लिक को संभालना नहीं है। –

0

वहाँ क्षेत्र इनपुट अर्थात tabbing से दूर क्लिक करने से फोकस खो के अन्य तरीके हैं। आप ध्यान केंद्रित उपयोग कलंक घटना खो रोकना चाहते हैं अर्थात

document.getElementById('txtSearch').addEventListener('blur', e => { 
 
    e.target.focus(); 
 
});

संबंधित मुद्दे