2011-12-16 12 views
11

मुझे फ़ाइल इनपुट को जिस तरीके से मैं चाहता हूं उसे बनाने में कुछ परेशानी हो रही है। फ़ाइल तत्व 2 भागों, टेक्स्टफील्ड और ब्राउज़ बटन के मौजूद है। आईई की तुलना में अन्य ब्राउज़रों में से किसी एक पर क्लिक करने से एक विंडो खुलती है जहां आप अपनी फाइलों का चयन कर सकते हैं। आईई में हालांकि यह केवल तब खुलता है जब मैं ब्राउज़ बटन पर क्लिक करता हूं। यदि मैं इसके आगे के टेक्स्टफील्ड पर क्लिक करता हूं तो मुझे विंडो खोलने के लिए डबलक्लिक करना होगा। क्या जावास्क्रिप्ट के साथ इसे ठीक करने का कोई तरीका है, इसलिए टेक्स्टफील्ड पर एक क्लिक भी विंडो खोल देगा? मैंने निम्नलिखित की कोशिश की, लेकिन यह काम नहीं किया। (कोड ज्यादा वास्तविक उदाहरण से सरल है)एकल क्लिक फ़ाइल इनपुट पर IE में ओपन ब्राउज विंडो

एचटीएमएल: <input id="file" name="file" type="file"/>

जे एस/jQuery:

$("#file").click(function(){ 
    $(this).trigger("dblclick"); 
}); 

$("#file").dblclick(function(){ 
    alert("Double"); 
}); 

अब उपरोक्त कोड अलर्ट "डबल" लेकिन विंडो खोलने नहीं है। क्या इसे ठीक करने का कोई तरीका है?

अग्रिम धन्यवाद।

उत्तर

9

चूंकि संपूर्ण नियंत्रण ब्राउज़र के मूल निवासी है (और कभी भी टेक्स्ट बॉक्स प्लस बटन के रूप में उजागर नहीं होता है) तो आपको बस उन तरीकों/घटनाओं तक पहुंच नहीं है जो आपको अपलोड बटन का आह्वान करने की अनुमति देगी। मेरा मानना ​​है कि यह मुख्य रूप से गैर-इच्छित फ़ाइलों को अपलोड करने में उपयोगकर्ता को छेड़छाड़ करने वाली साइटों से बचने के लिए है।

यदि आप वर्कअराउंड को लागू करने के लिए थोड़ा समय ले सकते हैं, तो this प्रबंधित करने में आसान एक आसान अपलोड घटक बनाने का काम अच्छा है। मुझे यकीन है कि एक त्वरित Google आपको फ़ाइल अपलोड घटक को स्टाइल करने के तरीके पर कई अन्य उदाहरण सूचीबद्ध करेगा।

+2

मेरे पास यह वही समस्या थी, मेरा कस्टम इनपुट ठीक लग रहा था लेकिन आईई उपयोगकर्ताओं को डबल क्लिक करना पड़ा। लिंक पर क्लिक करने के लिए बहुत आलसी लोगों के लिए: अपने फ़ाइल इनपुट तत्व का फ़ॉन्ट आकार बड़ा करें (आलेख 100px का सुझाव दिया गया है, मुझे अपने फॉर्म के लिए 200px की आवश्यकता है। यह बटन को उड़ाता है ताकि पाठ-इनपुट भाग छोटा हो। धन्यवाद! – chiliNUT

0

आईई 6 (http://jsfiddle.net/SUWRK/) पर JSFiddle के साथ बस अपने कोड का परीक्षण किया और, मेरी समझ से, यह काम करता है जैसा कि आप उम्मीद कर रहे हैं ... चेतावनी एक क्लिक ईवेंट पर दिखाई देती है (कृपया ध्यान दें कि IE < 9 में dblclick ईवेंट को पकड़ना मुश्किल है - https://gist.github.com/399624 देखें)।

क्या आप सुनिश्चित हैं कि बड़े कोड सेट के साथ कुछ और नहीं चल रहा है?

+0

परिणाम मैं चाहता हूं कि ब्राउज विंडो खोलने के लिए "डबल" को अलर्ट न करें। अलर्ट यह दिखाने के लिए था कि यह वास्तव में डबल क्लिक को ट्रिगर करता है (जिसे ब्राउज़ विंडो खोलने के लिए आवश्यक है) लेकिन यह विंडो नहीं खोलता है। – Ilians

+1

ऐसा लगता है कि मैंने आपके प्रश्न को गलत समझा है। मैं उसके लिए माफी माँगता हूँ। किसी भी तरह से, आप जिस फ़ाइल की आवश्यकता है उस पर फ़ाइल अपलोड घटक को नियंत्रित नहीं कर सकते हैं। मेरी दूसरी प्रतिक्रिया देखें (क्योंकि संपूर्ण प्रतिक्रिया के लिए टिप्पणी बॉक्स बहुत छोटा है)। – lsoliveira

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