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

标签 javascript jquery html 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');
    }
}

我该怎么做,更改代码使其正常工作?

最佳答案

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

根据 W3C's document :

onchange event occurs when a control loses the input focus and its value has been modified since gaining focus

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

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

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

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

关于javascript - 为什么选择多个文件在 chrome 浏览器上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680519/

相关文章:

JavaScript/JQuery 字符串替换

javascript - 使用jquery和c#从span检索数据

javascript - NG-bind 不适用于 "<p>This is <span ng-bind= "city"></span> 城市。它因 <span ng-bind= "famous"></span> 而闻名。</p>”

javascript - react native : Allow device rotation only when webview plays video

jquery - 如何停止多次悬停时重复淡入淡出

html - 使 div 响应并设置样式以显示新闻

jquery - 如何隐藏html中的行

javascript - 与 ES7 : Uncaught TypeError: Cannot read property 'state' of undefined react

javascript - AngularJS : The correct way to factory returning object?

javascript - 返回溢出内容中的子页面 anchor