2011-09-14 12 views
5

क्या आपने कभी इस आईई 7 की बग का सामना किया था:IE7 बग "इनपुट प्रकार = फ़ाइल" दो बार आग लगाना हल करें?

<input type="file" id="xxx"> 

<script> 
    $('#xxx').change(function(){ alert(1) }) 
</script> 

जब मैं इनपुट & फ़ाइल पर क्लिक करता हूं, तो अलर्टबॉक्स पहली बार दिखाता है। फिर मैं शरीर पर रिक्त क्षेत्र पर क्लिक करता हूं, अलर्टबॉक्स एक बार फिर दिखाता है। यह तब भी होता है जब मैं परिवर्तन ईवेंट को इनपुट में बाध्य करता हूं: JQuery 1.6 के साथ फ़ाइल (इस पल में सबसे आखिरी)।

मैं इसे सबसे सरल तरीके से कैसे रोक सकता हूं? सभी सुझावों के लिए धन्यवाद!

+0

मुझे लगता है कि आईई 7 में पहली घटना फ़ाइल बदल रही है, दूसरी घटना तब हो रही है जब फ़ील्ड फोकस (ऑनब्लर) खो देता है। –

+0

मैं केवल एक बार निष्पादित करने के लिए कोड को सीमित करने के लिए एक चर का सुझाव देने से नफरत करता हूं। – f0x

उत्तर

6

भाग गया है यह मैं क्या "मस्तिष्क तूफान" के कुछ कठिन घंटे के बाद लगा रहे:

$('input:file').click(
    function(){ 
     $(this).one(
       'change', 
       function(){ alert(1) /*do stuff here*/ } 
     ) 
    } 
) 

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

और धन्यवाद भगवान यह काम करता है! आप सभी को धन्यवाद।

+0

बहुत बहुत धन्यवाद! इच्छा है कि मैं इसे कई बार उखाड़ फेंक सकता हूं। मेरी समस्या हल – SirDerpington

0

मैं बस ट्रिगर निकल जाएगा एक बार अपने समारोह

+0

और पहले रन के बाद पृष्ठ की अवधि के लिए फ़ंक्शन को मार दें? ;) – f0x

+0

आप सही हैं, फिर यह संभव हो सकता है कि ईवेंट को एक .blur() ट्रिगर पर परीक्षण उद्देश्यों के लिए ट्रिगर करने के लिए दो बार बुलाया जा सके, आईई .change() में दो निर्देश भेज सकता है .blur () जब आप फोकस खो देते हैं – Narvath

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