为什么选择多个文件在Chrome浏览器上不起作用?

时间:2014-02-10 14:59:53

标签: javascript jquery html5 google-chrome

以下js代码用于html5多个文件选择[复制],对于Chrome浏览器不起作用,在多次选择文件同名后。

对于EX:选择文件admin.png 2次或以上串联。它只是第一次提醒。

DEMO(这不仅适用于Chrome浏览器): http://jsfiddle.net/s9mt4/

function doClick() {
    var el = document.getElementById("fileElem");
    if (el) {
        el.click();
    }
}
function handleFiles(files) {
    var d = document.getElementById("fileList");

var elementArray = document.getElementsByClassName("ImgNameUp");
var ReValue = true;
for (var i = 0; i < elementArray.length; ++i){
    if(elementArray[i].innerHTML == files[0].name){
        ReValue = false;
    }
}
$('.ImgNameUp2').append('<div class="ImgNameUp">'+files[0].name+'</div>')
    if (ReValue) {
        alert('true');
    } else {
        alert('false');
    }
}

我该怎么做,改变它正常工作的代码?

1 个答案:

答案 0 :(得分:1)

您的输入字段正在侦听onchange事件以触发javascript。

根据W3C's document

  当控件丢失输入焦点及其时,会发生

onchange事件   自获得焦点以来,价值已被修改

如果您尝试上传相同的文件,则文件输入的值不会更改,因此不会触发该函数。我认为Chrome是唯一能够“正确”实现此功能的浏览器。

如果要上传两次,请清除文件输入值:

function doClick() {
    var el = document.getElementById("fileElem");
    $(el).val(null); // <-- this line
    if (el) {
        el.click();
    }
}

http://jsfiddle.net/s9mt4/2/