2009-08-14 10 views
6

में नहीं निकाला जाता है मेरे पास एक ड्रॉपडाउन मेनू है जहां एक div में क्लिक किया जाता है और सूची दिखायी जाती है।ब्लर इवेंट आई 7 और आईई 6

फोकस पर मुझे सूची छिपाना है (यानी जब उपयोगकर्ता क्लिक करता है या किसी अन्य तत्व पर केंद्रित होता है और माउस पर नहीं)। इसलिए मेरी स्पष्ट पसंद onblur थी।

अब जावास्क्रिप्ट फ़ायरफ़ॉक्स में काम करता प्रतीत होता है लेकिन आईई में नहीं है क्योंकि मेरे div में ऊंचाई और चौड़ाई निर्दिष्ट एक उप div है। यह एक परीक्षण फ़ाइल में पुनरुत्पादित है। मैं jQuery का उपयोग कर रहा हूँ।

क्या यह इंटरनेट एक्सप्लोरर में ज्ञात समस्या है? और आसपास क्या काम है?

<html> 
    <head> 
    <title>Exploring IE</title> 
    <style type="text/css"> 
     /** Exploring IE**/ 
     .selected_option div {height:18px;} 
    </style> 
    <script type="text/javascript" src="jquery-1.3.2.min9919.js"></script> 
    <script type="text/javascript"> 
     $().ready(function(){ 
     $('.selected_option').blur(function(){ 
      alert('blurred'); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <div class="selected_option" tabindex="0"> 
     <div>anywhere in the page</div> 
    </div> 
    </body> 
</html> 
+0

पर ठीक मैं बाँध के साथ यह कोशिश की और अब भी वही समस्या बनी रहती है। आईई को छोड़कर सभी ब्राउज़रों में यह ठीक काम कर रहा है। –

+0

div element – Suresh

उत्तर

0

प्रयास करें:

$('.selected_option').bind('blur', function(){   
      alert('blurred'); 
}); 

इसके अलावा, आप कर सकते हैं एक और चाल - सभी माउस क्लिक संभाल या/और ध्यान केंद्रित करने की घटनाओं और अगर कुछ एक और नियंत्रण का चयन किया जाता है, तो अपने स्वयं के धुंधला (है निश्चित रूप से यह करता है, तो पहले चुना गया था)।

1

पहले महसूस करें कि focus और blur ईवेंट केवल focusable elements पर समर्थित हैं। अपने <div> को ध्यान केंद्रित करने के लिए आपको tabindex property पर देखने की आवश्यकता है।

0

मैंने div इंडेक्स प्रॉपर्टी को div के लिए फोकस करने योग्य सेट किया है और इसके अलावा यदि मैं ऊंचाई पर टिप्पणी करता हूं तो ब्लर इवेंट निकाल दिया जाता है, इसलिए मुझे लगता है कि समस्या नहीं है।

+1

के लिए कोई Tabindex विशेषता नहीं है या तो किसी के जवाब पर अपना प्रश्न या टिप्पणी संपादित करें। अपना जवाब तब तक पोस्ट न करें जब तक आप इसे समझ न लें और यह आपके मूल प्रश्न का उत्तर दें। – geowa4

1

एक div के बजाय एंकर टैग का उपयोग करने का प्रयास करें क्योंकि ये नैतिक रूप से केंद्रित हैं। आप वास्तव में किसी पृष्ठ से लिंक करने से रोकने के लिए एंकर के href को "जावास्क्रिप्ट: शून्य (0)" पर सेट कर सकते हैं और सीएसएस प्रॉपर्टी "डिस्प्ले: ब्लॉक" का उपयोग इसे div की तरह प्रस्तुत करने के लिए कर सकते हैं। इस तरह कुछ:

<html> 
    <head> 
    <title>Exploring IE</title> 
    <style type="text/css"> 
     /** Exploring IE**/ 
     .selected_option 
     { 
     display: block; 
     height:18px; 
     } 
    </style> 
    <script type="text/javascript" src="jquery-1.3.2.min9919.js"></script> 
    <script type="text/javascript"> 
     $().ready(function(){ 
     $('.selected_option').blur(function(){ 
      alert('blurred'); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <a href="javascript:void(0)" class="selected_option">anywhere in the page</a> 
    </body> 
</html> 

इसका परीक्षण नहीं किया है, लेकिन मुझे लगता है कि इसे काम करना चाहिए। फिर

$('.selected_option').bind('focusout', function(){ 
    alert('focusout'); 
}); 

, इस स्वामित्व है (quirksmode देखें) लेकिन अगर यह आपकी समस्या नहीं सुलझती उपयुक्त हो सकता है:

7

आईई मालिकाना focusout घटना मेरे लिए काम किया। आप हमेशा blur और focusout ईवेंट दोनों से जुड़ सकते हैं।

+0

टिप के लिए धन्यवाद। इसने आई 7 के साथ मेरी समस्याओं का हल किया। पहले लाइव ('फोकसआउट') की कोशिश की, लेकिन यह काम नहीं किया, और फिर बाध्य() जो यानी 7 के लिए काम किया। – Serkan

2
onkeypress="this.blur(); return false;" 

अपने काम करता है सभी आईई संस्करण

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