2014-01-29 48 views
5

我使用“多个”标签让用户选择多个文件上传。HTML:选择多个文件但没有显示文件名?

<input type="file" name="files[]" multiple /> 

但它只显示例如“3个文件被选中”。还会显示文件名称会更好。

它可行吗?谢谢。

顺便说一句,在这种情况下如何取消选择文件(例如清除列表)?

回答

6

您可以通过输入元素上.files属性做到这一点:

document.getElementById('files').addEventListener('change', function(e) { 
 
    var list = document.getElementById('filelist'); 
 
    list.innerHTML = ''; 
 
    for (var i = 0; i < this.files.length; i++) { 
 
    list.innerHTML += (i + 1) + '. ' + this.files[i].name + '\n'; 
 
    } 
 
    if (list.innerHTML == '') list.style.display = 'none'; 
 
    else list.style.display = 'block'; 
 
});
<input type="file" id="files" multiple /> 
 
<pre id="filelist" style="display:none;"></pre>

这首先清空的情况下,仍然有从以前选择的东西的清单,然后经过然后将其添加到输入下方的<pre>元素。如果列表中没有选定项目,则将隐藏<pre>

PS:您可以通过点击输入清除列表,然后按esc或单击文件选择窗口上的“取消”。

+0

这有助于很多,谢谢! – user180574

+2

谢谢!我喜欢这种方法,但是我在选择多个文件时将其更改为仅添加文件名,因为当您仅选择1个文件时,默认显示1个文件名。 'if(this.files.length> 1){for loop ...}' – Chris

+0

这很漂亮。 –