2010-08-20 15 views
103

चलो कहते हैं कि हम इस कोड को करते हैं:एचटीएमएल <input type = 'फ़ाइल'> फ़ाइल चुनाव घटना

<form action='' method='POST' enctype='multipart/form-data'> 
    <input type='file' name='userFile'><br> 
    <input type='submit' name='upload_btn' value='upload'> 
</form> 

जो इस में जो परिणाम:

image showing browse and upload button

उपयोगकर्ता क्लिक करता है 'ब्राउज़ ... 'बटन, एक फ़ाइल खोज संवाद बॉक्स खोला जाता है:

image showing a file search dialog box with a file selected

उपयोगकर्ता फ़ाइल को डबल-क्लिक करके या 'ओपन' बटन पर क्लिक करके फ़ाइल का चयन करेगा।

क्या कोई जावास्क्रिप्ट इवेंट है जिसका उपयोग फ़ाइल के चयन के बाद अधिसूचित होने के लिए किया जा सकता है?

उत्तर

129

परिवर्तन घटना को सुनें।

input.onchange = function(e) { 
    .. 
}; 
+2

हम इसे लिखेंगे जहां .. जावास्क्रिप्ट स्क्रिप्ट टैग – Moon

+4

हां स्क्रिप्ट टैग में, या आप इसे एक विशेषता के रूप में जोड़ सकते हैं ('<इनपुट प्रकार =" फ़ाइल "onchange =" ... "/>') हालांकि यह है सिफारिश नहीं की गई। – Anurag

+6

ध्यान दें कि आईई 7 और 8 में 'परिवर्तन' घटना फॉर्म इवेंट तक बबल नहीं होती है। आपको अपने श्रोता को टैग पर रखना होगा। – xer0x

26

जब आपको फ़ाइल को फिर से लोड करना होता है, तो आप इनपुट के मान को मिटा सकते हैं। अगली बार जब आप कोई फ़ाइल जोड़ते हैं, 'परिवर्तन पर' ईवेंट ट्रिगर होगा।

document.getElementById('my_input').value = null; 
//^that just erase the file path but do the trick 
+2

के बाद अलग-अलग फ़ाइल चुनने का निर्णय लेता है, लेकिन यह ठीक काम करता है लेकिन अजीब IE <11 व्यवहार से अवगत रहें। यह आपको इनपुट के मूल्य को बदलने की अनुमति नहीं देता है, इसलिए सबसे अधिक संभावना है कि आपको एक कामकाज की आवश्यकता होगी। http://stackoverflow.com/questions/9011644/how-to-reset-clear-file-input –

6

jQuery रास्ता:

$('input[name=myInputName]').change(function(ev) { 

    // your code 
}); 
0

.. बदलें घटना भले ही आप को रद्द पर क्लिक कहा जाता हो जाता है

+2

यह मदद करेगा यदि आप अपने उत्तर को समझाने के लिए कुछ कोड प्रदान करेंगे, क्योंकि प्रश्न कोड में कोई बदलाव घटना नहीं है टुकड़ा – DevDig

1

तरह से मैं शुद्ध जे एस के साथ यह किया है कि:

var files = document.getElementById('filePoster'); 
 
var submit = document.getElementById('submitFiles'); 
 
var warning = document.getElementById('warning'); 
 
files.addEventListener("change", function() { 
 
    if (files.files.length > 10) { 
 
    submit.disabled = true; 
 
    warning.classList += "warn" 
 
    return; 
 
    } 
 
    submit.disabled = false; 
 
});
#warning { 
 
    text-align: center; 
 
} 
 

 
#warning.warn { 
 
\t color: red; 
 
\t transform: scale(1.5); 
 
\t transition: 1s all; 
 
}
<section id="shortcode-5" class="shortcode-5 pb-50"> 
 
    <p id="warning">Please do not upload more than 10 images at once.</p> 
 
    <form class="imagePoster" enctype="multipart/form-data" action="/gallery/imagePoster" method="post"> 
 
     <div class="input-group"> 
 
    \t  <input id="filePoster" type="file" class="form-control" name="photo" required="required" multiple="multiple" /> 
 
\t  <button id="submitFiles" class="btn btn-primary" type="submit" name="button">Submit</button> 
 
     </div> 
 
    </form> 
 
</section>

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