2011-10-31 9 views
33

मेरे पास सामग्री के साथ गतिशील/जेएसओएन लोड किए गए टैब के साथ एक jquery UI संवाद है। जटिलता के कारण, मैं वास्तव में एक पहेली या प्रासंगिक कोड पोस्ट नहीं कर सकता (बहुत अधिक कोड)।प्रोग्रामेटिक रूप से फोकस निकालें?

क्या हो रहा है कि जब संवाद खुलता है, तो आप पहले टैब तक संवाद के तत्वों के माध्यम से टैब कर सकते हैं। उसके बाद, आप कहीं और टैब तक नहीं जा सकते हैं। फोकस उस टैब पर लॉक है, भले ही आप कहीं और क्लिक करते हैं, उस टैब पर उस फोकस को लॉक किया गया है।

मैं इस मुद्दे के वास्तविक कारण को ढूँढने में असमर्थ हूं।

तो, मैं प्रोग्रामेटिक रूप से फ़ोकस को कैसे हटाऊंगा?

+0

आप किस ब्राउज़र का उपयोग कर रहे हैं? आईई में आप कभी-कभी किसी अच्छे कारण के लिए फोकस खो देते हैं। – Hossein

+0

क्या टीएबी के लिए कीप्रेस इवेंट को फोकस स्विचिंग को मैन्युअल रूप से प्रबंधित करने के लिए अधिलेखित किया गया है (जैसा कि कोई मॉडल डायलॉग बॉक्स दिखाते समय कर सकता है)? –

+0

एक कुंजीपटल ईवेंट देखने वाला एकमात्र स्थान टैब की सामग्री में नीचे तीर को हिट करने में सक्षम होने के लिए एक कीडाउन फ़ंक्शन के लिए है। और यह सभी ब्राउज़रों में है। – Jason

उत्तर

55

यह मदद कर सकता है ...

http://api.jquery.com/blur/

$('#tabName').blur(); 
+1

यह सही जवाब है, हालांकि मैंने अपनी स्थिति स्पष्ट रूप से शब्द/व्याख्या नहीं की। मैं तदनुसार अद्यतन करूंगा। धन्यवाद। – Jason

+3

यह बहुत अच्छा काम करता है और मेरे पास एक समान समस्या का समाधान करता है। एक त्वरित परिवर्तन मैं अनुशंसा करता हूं, यदि आप jQuery का उपयोग कर रहे हैं और इसे सामान्य रूप से घटनाओं के दायरे में लागू करने की आवश्यकता है तो आप ऐसा कुछ कर सकते हैं: '$ (document.activeElement) .blur()' - जो कुछ भी सक्रिय है, वह फोकस खो देगा घटना के समय। – Markus

+2

शुद्ध जावास्क्रिप्ट के साथ इसे कैसे करें? – AmerllicA

0

मैं जेएस असफल होने के लिए यह पता लगाने के लिए अलर्ट का एक भार डालूंगा। जैसे

alert(1); 
var a = 10; 
alert(2); 
var b = null; 
alert(3); 
a += 5; 
alert(4); 
b.hello(); 
alert(5); 

जाहिर है इस उदाहरण में पिछले चेतावनी हो जाएगा 4.

यह एक अच्छा तरीका नहीं है लेकिन हर कोई कुछ बिंदु पर यह करने के लिए है।

+9

अलर्ट डीबग करने का एक उचित तरीका नहीं है, खासकर अगर यह मूसोमव, होवर या इसी तरह की घटनाओं पर प्रतिक्रिया करता है। लगभग किसी भी ब्राउज़र में आज डिबगिंग कंसोल होता है जिसे आप 'console.log (...) का उपयोग करने के लिए लिख सकते हैं;' – ThiefMaster

+6

डीबग करने का सही तरीका यह है कि आपको सबसे कुशल तरीके से बग को ट्रैक करने में मदद मिलती है। अलर्ट में डीबगिंग में बहुत उपयोगी भूमिका होती है क्योंकि वे निष्पादन रोकते हैं। कल कल मैं एक गड़बड़ jQuery एनीमेशन डीबग कर रहा था और 'console.log()' यह पता लगाने के लिए बेकार था कि यह दृश्य गड़बड़ कहाँ से आ रही थी, क्योंकि यह इतनी तेजी से हुई थी। अलर्ट में जोड़ने से प्रत्येक चरण में एनीमेशन रुक गया और मुझे यह पता लगाने की इजाजत दी गई कि गलती कहाँ से पैदा हुई थी। आप सही हैं कि ओपीएस विधि उचित तरीका नहीं है, और 'console.log() 'उस उदाहरण में बेहतर है, लेकिन' अलर्ट()' में डिबगिंग में एक स्थान है। – Gavin

+1

@ गैविन और बाकी। फिर 'डीबगर' कमांड का उपयोग करने के लिए बेहतर (कम से कम ब्राउज़र में इसका समर्थन करने वाले)। यह निष्पादन को रोकता है, लेकिन फिर भी आप यह देखने के लिए अपने डेवलपर टूल का उपयोग करने देता है कि क्या हो रहा है। अलर्ट के साथ, आपको जो भी मिलता है वह वर्तमान स्थिति का दृश्य स्नैपशॉट होता है, जो हमेशा मदद नहीं करता है। – stafffan

2

कोशिश क्षेत्र आप फोकस कम करना चाहते पर एक blur घटना को ट्रिगर।