我有一个基本的input[file]
元素,我隐藏。当你点击#holder
时,会弹出一个文件浏览器。但选择一个文件会触发console.log()
行被执行两次(在我的电脑上)。文件输入触发器改变事件两次(或更多)
请注意:以下代码会使我的Chrome选项卡崩溃。
您应该将其作为单独的文件运行。无法提供“正常”演示,但这是最接近MCVE。
var element = document.getElementById('holder');
element.onclick = function(e) {
var input = document.getElementById('file-input');
input.click();
input.addEventListener("change", function(evt) {
console.log(evt);
Phimij.addFiles(input.files);
}, false);
};
#holder {
border: 10px dashed #ccc;
width: 300px;
height: 300px;
margin: 20px auto;
}
#holder.hover {
border: 10px dashed #333;
}
#file-input {
display: none;
}
<div id="holder">
<input type="file" multiple id="file-input" />
</div>
你在父每次点击事件添加事件侦听器。另外,如果你点击输入,它也会触发输入的点击 – Kaiido