0

我必须输入像

<input id="input_A" type="file" multiple="" onchange="doitgood();" />
<input id="input_B" type="text" />

function doitgood(){
    document.getElementById('input_B').value=document.getElementById('input_A').value;
}

但最后它只复制一个文件,而不是所有用逗号分隔的文件。`input_bB 也可以隐藏起来,这要好得多。

我需要这个的原因是我还需要我的文件($_FILES)列表$_POST来检索一些额外的数据。

A问题是我需要从to完全相同的字符串B

4

3 回答 3

2
<script>
    function doitgood(){   
    var str = '';
    var files = document.getElementById("input_A").files;
    for (var i = 0; i < files.length; i++){
        str += files[i].name;
    }
 document.getElementById('input_B').value=str;
 }
</script>
于 2013-05-22T19:54:43.600 回答
1

您可以尝试使用FileList API来获取文件的名称和修改日期。

function doitgood(){
    var files = document.getElementById('input_A').files,
        inputB = document.getElementById('input_B'),
        fileNames = [], fileDates = [];

    for(var i = 0, len = files.length; i < len; i++){
        var file = files[i];
        fileNames.push(file.name);
        fileDates.push(+file.lastModifiedDate);
    }

    inputB.value = fileNames.join(',');
    console.log(fileDates);
}

这应该适用于任何“现代浏览器”(因此,不是 IE <= 9)。

演示:http: //jsfiddle.net/bA9Hm/1/

于 2013-05-22T19:58:43.380 回答
1

使用 Jquery map() 函数来得到你想要的(包含 csv 列表值的隐藏输入)

<script>
$(function(){  
    var filelist;
     $("#input_A").change(function () {
       filelist = $.map($('#input_A').get(0).files, function (file, i) {
            return file.name;
        });
        var fileinput = $('<input/>',{type:'hidden',id:'input_B',name:'input_B',value:filelist});
        fileinput.appendTo('#form1');       
    });
});

</script>

http://jsfiddle.net/js5AW/

于 2013-05-22T20:10:26.993 回答