2010-08-20 19 views
103

Hãy nói rằng chúng tôi có mã này:HTML <input type = 'file'> Lựa chọn tập tin Event

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

mà kết quả trong việc này:

image showing browse and upload button

Khi người dùng nhấp vào 'Duyệt ... ', hộp thoại tìm kiếm tệp được mở:

image showing a file search dialog box with a file selected

Người dùng sẽ chọn tệp bằng cách nhấp đúp vào tệp hoặc bằng cách nhấp vào nút 'Mở'.

Có sự kiện Javascript mà tôi có thể sử dụng để được thông báo sau khi tệp được chọn không?

Trả lời

129

Nghe sự kiện thay đổi.

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

chúng ta sẽ viết nó ở đâu .. trong thẻ javascript script – Moon

+4

có trong thẻ script, hoặc bạn có thể thêm nó như là một thuộc tính ('') mặc dù đây là không được khuyến khích. – Anurag

+6

Lưu ý rằng trong IE7 và 8 rằng sự kiện 'thay đổi' không bong bóng lên đến sự kiện biểu mẫu. Bạn cần đưa người nghe của mình lên thẻ . – xer0x

26

Khi bạn phải tải lại tệp, bạn có thể xóa giá trị của đầu vào. Lần tới khi bạn thêm tệp, sự kiện 'thay đổi' sẽ kích hoạt.

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

Điều đó hoạt động tốt nhưng phải biết hành vi IE <11. Nó không cho phép bạn thay đổi giá trị của đầu vào, vì vậy rất có thể bạn sẽ cần một giải pháp thay thế. http://stackoverflow.com/questions/9011644/how-to-reset-clear-file-input –

6

jQuery cách:

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

    // your code 
}); 
0

The Change sự kiện được gọi là ngay cả khi bạn click vào hủy ..

+2

nó sẽ giúp nếu bạn cung cấp một số mã để giải thích câu trả lời của bạn, vì không có sự kiện thay đổi được đề cập trong mã Câu hỏi đoạn trích – DevDig

1

Đó là cách tôi đã làm nó với JS tinh khiết:

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>

Các vấn đề liên quan