2017-10-31 31 views
9

पर फ़ाइल अपलोड बॉक्स खोलने वाली इनपुट फ़ाइल मेरे पास label तत्व है, जो इसके संबंधित input type="file" के साथ, img मेंतत्वों के बीच सैंडविच भी है।आईई

input को label को फ़ाइल अपलोड बॉक्स लॉन्च करने का काम करने की अनुमति देने के लिए घोषित किया गया है, जब उसके अंदर कोई भी तत्व क्लिक किया जाता है। यह, ज़ाहिर है, आईई को छोड़कर हर प्रमुख ब्राउज़र में तैराकी से काम करता है। आईई में, img से labelअन्य अंदर कहीं भी क्लिक फाइल अपलोड बॉक्स का शुभारंभ करेंगे, लेकिन पर क्लिक img नहीं होगा ...

इस समस्या किसी भी अन्य ब्राउज़र के साथ IE में this fiddle खोलने के द्वारा दोहराया देख सकते हैं।

आश्चर्यजनक रूप से, इस मुद्दे को form की उपस्थिति में अलग किया जा सकता है। किसी कारण से जब form रैपर लेबल कार्यों को सही ढंग से हटा दिया जाता है। मैं स्पष्ट रूप से इसे एक समाधान के रूप में उपयोग नहीं कर सकता। विचार?

+1

देखें समाधान के लिए, आप एक पृष्ठभूमि छवि के साथ एक अवधि में paperclip' 'बदल सकते हैं। यह काम करता है, [अद्यतन पहेली] देखें (https://jsfiddle.net/MrLister/de531suo/6/); हालांकि यह कोई समाधान नहीं है, इसलिए उत्तर के रूप में पोस्ट नहीं किया जा रहा है। –

+0

@Mrlister इसके लिए धन्यवाद। मैं अपने कोड में डुप्लिकेट कर सकता हूं और यह वास्तव में एक वर्कअराउंड के रूप में ठीक से काम करता है। जैसा कि आपने कहा है, यह एक समाधान नहीं है। – Tom

+0

खैर आईई विनिर्देश के लिए सही है लेबल को किसी भी तत्व को शामिल करने की अनुमति नहीं है जिसमें इसमें आपका आईएमजी टैग, https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label शामिल है –

उत्तर

5

यह IE में एक ज्ञात बग आप Microsoft Connect

में देख सकते हैं हल करने के लिए बस <img>

को pointer-events: none; जोड़ने यह छवि को उजागर करने के कुछ ब्राउज़रों पैदा कर सकता है जब क्लिक किया जा रहा है। इससे बचने के लिए छवि अचयनित करें।

पूर्ण समाधान है:

.selector-for-image { 
    pointer-events: none; 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 

updated JSFiddle