以下 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();
}
}
关于javascript - 为什么选择多个文件在 chrome 浏览器上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680519/