克隆文件输入提交文件,在IE8中没有文件名,文件名在FF中

时间:2015-08-20 23:15:54

标签: jquery jsp internet-explorer firefox

another question中的完整说明。

我正在克隆文件输入字段,以便在IE 8中使用多个文件上传。我正在使用这些代码:

function addField(){
        if ( $('form input:file').last().val() != ""  ){
        var lastfile = $('form input:file').last();
        var countfile = ($('form input:file').length)+1;
        var always = $('#filesUploadId');
        var cloned = always.clone();
        cloned.attr("name", "correoForm.filesUpload");
        cloned.attr("id", "file_"+countfile);
        cloned.insertAfter(lastfile);
}

但是,它在IE 8和FF中的工作方式有所不同,但我希望它们在两者中都能正常工作。

如果我选择1.txt,2.jpg,3.zip,在IE8中我有三个文件(实际上是四个,但最后一个没有文件名,所以没关系),但在FF中我有4个,分别为1,2,3和1.txt。 1.txt重复。

所以:

  • 为什么我不在IE 8中获取文件名?虽然它有效,但我想问一下。
  • 为什么我在FF中有文件名?
  • 我怎样才能拥有"全部清除"功能,删除除第一个以外的所有其他文件输入?我想保留第一个文件输入字段及其样式和事件捆绑器,但删除其内容。如果复制文件输入将导致文件在FF中重复,则复制第一个文件输入将不会删除其内容。

我正在制作一个木板。希望今天能让它运转起来。

1 个答案:

答案 0 :(得分:0)

我不知道它是否有帮助,但是当我有一个这样的表格时,我使用数组作为文件输入的名称......我将用代码解释自己:

cloned.attr("name", "correoForm.filesUpload[]");

我在名称的末尾添加了[],因此不是3个具有相同名称的输入,而是可以作为一个输入处理,它将是该输入的数组。

并删除这样的额外输入,(我看到你正在使用jquery)

function removeExtraInputs() {
    $('input[type=file]').not(':first').remove();
}