【发布时间】:2019-05-15 23:20:40
【问题描述】:
在从一个特定输入中选择文件时,我试图将 html 元素(特别是文件输入元素)注入父 div。当这个输入选择一个文件时,它应该将该文件传递给我正在创建的输入元素。
主输入选择文件:
var file = document.getElementById("file");
file.onchange = function(){
var ext = this.value.match(/\.([^\.]+)$/);
if(ext!=null && ext.length>1){
switch (ext[1].toLowerCase()) {
case 'doc':
...
if (file.files.length > 0) {
appendFile(file.files);
}
break;
default:
alert('Sorry, files of type .' + ext[1].toLowerCase() + " are not allowed.");
this.value = '';
}
}
};
如果有文件onchange,将文件传递到appendFile
function appendFile(files){
...
if(files.length>0){
file = files[0];
...
htmlFile.appendChild(createFileInput(files));
...
parentDiv.append(htmlFile);
}
}
进行额外检查以确保文件存在,生成其他 htmlElements 并将文件传递给 createFileInput 函数以创建输入标签
function createFileInput(files){
fileInput = document.createElement("input");
fileInput.setAttribute('type','file');
fileInput.files=files;
fileInput.classList.add('files');
fileInput.style.display = 'none';
return fileInput;
}
创建一个文件类型的输入标签,并将输入中的文件设置为等于传递给函数的文件。
这在 Chrome 中非常适合我。它在 IE 中对我来说不能正常工作,但我很确定我已经在 createFileInput() 方法中找到了 fileInput.files=files; 行的错误。
由于某种原因,这些隐藏输入的文件字段没有在 IE 中设置。有谁知道这是为什么,或者知道设置输入文件字段的不同方法?
【问题讨论】:
标签: javascript file internet-explorer input bulma