admin管理员组文章数量:1277540
I am using HTML5's wonderful 'multiple' file select feature.
<input type="file" id="fileInput" onChange="runTest()" multiple>
I would like to display the selected filenames below the input field and make it look pretty with CSS, however...
If I run a test JS function, that 'alerts' me of the input field's value, it only shows one file regardless of me selecting 10.
function runTest() {
var fileInput = document.getElementById('fileInput').value;
alert("You selected: "+fileInput);
}
I was doing this for when I had a 'single' file input field and worked okay but now it's 'multiple', it doesn't like it.
Any suggestions?
I am using HTML5's wonderful 'multiple' file select feature.
<input type="file" id="fileInput" onChange="runTest()" multiple>
I would like to display the selected filenames below the input field and make it look pretty with CSS, however...
If I run a test JS function, that 'alerts' me of the input field's value, it only shows one file regardless of me selecting 10.
function runTest() {
var fileInput = document.getElementById('fileInput').value;
alert("You selected: "+fileInput);
}
I was doing this for when I had a 'single' file input field and worked okay but now it's 'multiple', it doesn't like it.
Any suggestions?
Share Improve this question asked Oct 10, 2011 at 22:11 TheCarverTheCarver 19.7k27 gold badges103 silver badges153 bronze badges3 Answers
Reset to default 7Well, it seems the value, or val()
, returned by the element is the name of only the last file selected. To work around this, it might be wise to use the nature of the multiple-change events:
$('input:file[multiple]').change(
function(){
$('ul').append($('<li />').text($(this).val()));
});
JS Fiddle demo.
And either output the names to a list (as in the example), or append the latest value to an array, or, possibly, use/create hidden inputs to store the filenames as you feel would best suit your application.
To access the file-names (as well as last modified date, file-size...) you can (tested in Chromium 12/Ubuntu 11.04) use the following:
$('input:file[multiple]').change(
function(e){
console.log(e.currentTarget.files);
});
JS Fiddle demo.
Edited to make the above slightly more useful and, hopefully, demonstrative:
$('input:file[multiple]').change(
function(e){
console.log(e.currentTarget.files);
var numFiles = e.currentTarget.files.length;
for (i=0;i<numFiles;i++){
fileSize = parseInt(e.currentTarget.files[i].fileSize, 10)/1024;
filesize = Math.round(fileSize);
$('<li />').text(e.currentTarget.files[i].fileName).appendTo($('#output'));
$('<span />').addClass('filesize').text('(' + filesize + 'kb)').appendTo($('#output li:last'));
}
});
JS Fiddle demo.
The final code-block updated, due to changes in Webkit, Chrome 24 (though possibly from earlier), by nextgentech in ments, below:
$('input:file[multiple]').change(
function(e){
console.log(e.currentTarget.files);
var numFiles = e.currentTarget.files.length;
for (i=0;i<numFiles;i++){
fileSize = parseInt(e.currentTarget.files[i].size, 10)/1024;
filesize = Math.round(fileSize);
$('<li />').text(e.currentTarget.files[i].name).appendTo($('#output'));
$('<span />').addClass('filesize').text('(' + filesize + 'kb)').appendTo($('#output li:last'));
}
});
JS Fiddle demo.
Set a break point on the alert call and take a look at the contents of the variable fileInput, see if there is another property that contains all of the file names.
Excellent code but object needs to be empty for each change:
$('input:file[multiple]').change(
function(e){
$('#output').empty();
console.log(e.currentTarget.files);
var numFiles = e.currentTarget.files.length;
for (i=0;i<numFiles;i++){
fileSize = parseInt(e.currentTarget.files[i].fileSize, 10)/1024;
filesize = Math.round(fileSize);
$('<li />').text(e.currentTarget.files[i].fileName).appendTo($('#output'));
$('<span />').addClass('filesize').text('(' + filesize + 'kb)').appendTo($('#output li:last'));
}
});
Thank you David...
本文标签: javascriptHTML5JSDisplay multiple file input in divStack Overflow
版权声明:本文标题:javascript - HTML5JS - Display multiple file input in div - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741249995a2365617.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论