2011-08-24 13 views
6

जैसा कि आप में से कुछ पहले ही जानते हैं, इंटरनेट एक्सप्लोरर की onchange घटना मूल रूप से संस्करण 9 से पहले टूटी हुई है। जब कोई परिवर्तन होता है तो ट्रिगर करने के बजाय, यह तब ट्रिगर होता है जब इनपुट फ़ील्ड फोकस खो देता है और इसमें परिवर्तन होते हैं।फ़ाइल इनपुट के साथ विनिमय के लिए कामकाज क्या है?

यह चेकबॉक्स और रेडियो बटन ("onclick इसके बजाय") और टेक्स्ट फ़ील्ड ("keyup इसके बजाय उपयोग करें") के लिए विभिन्न कामकाज का कारण बनता है।

हालांकि, मुझे फ़ाइल इनपुट के लिए यह समस्या है, और मैं यह नहीं समझ सकता कि मुझे यह सूचित करने के लिए क्या करना है कि एक नई फ़ाइल का चयन किया गया है, ठीक होने के बाद, और जब उपयोगकर्ता कहीं और क्लिक करता है । मैं खुद को माउस ईवेंट से संलग्न नहीं कर सकता क्योंकि यह माउस से संबंधित नहीं है; और मैं खुद को कीबोर्ड ईवेंट से संलग्न नहीं कर सकता क्योंकि यह कीबोर्ड से संबंधित नहीं है।

यदि मैं समस्या को हल कर सकता हूं तो मैं आईई-विशिष्ट सामग्री का उपयोग करने के इच्छुक हूं।


अतिरिक्त जानकारी:

मैं jQuery 1.6 का उपयोग करें और live विधि घटना संलग्न करने के लिए।

$(".upload").live("change", function() { /* stuff here */ }); 
+0

यहां इस समस्या के बारे में कुछ बात है: http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –

+0

http://jsfiddle.net/c8JuC/1/ IE7 emulated के साथ IE9 पर काम करता है। – pimvdb

+0

@pimvdb, मैं 'लाइव' का उपयोग करता हूं क्योंकि मैं ऑन-द-फ्लाई इनपुट का एक समूह उत्पन्न करता हूं, और ईवेंट को सही समय पर (jquery 1.6) से निकाल दिया नहीं जाता है। – zneak

उत्तर

3

सुनिश्चित करने के लिए एक मूल्य है कि वहाँ onFocus घटना, एक चेक के साथ संयुक्त का उपयोग करें। यह काम करता है क्योंकि उपयोगकर्ता फ़ाइल चुनने के बाद और ओएस फ़ाइल चयन संवाद बॉक्स हटा दिया जाता है, इनपुट तत्व में फोकस वापस कर दिया जाता है।

+0

दिलचस्प। मैं कोशिश करूँगा। – zneak

+1

यह निश्चित रूप से आईई-केवल अपवाद कोड होगा। यह फ़ायरफ़ॉक्स में बिल्कुल काम नहीं करता है। –

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