如何将文件名设置为其他输入

时间:2016-02-11 16:44:14

标签: javascript

下面的脚本工作正常。但问题是它在警告框中显示文件名。但我想要文件名作为输入值..我尝试了很多次,但我没有得到预期的outfile。示例如果我选择了第一个文件,我希望输入值在id =" 0"就像那样,如果它是第二个我想要id =" 2"

的价值
<input type="file" class="input"/>
<input type="file" class="input"/>
<input type="file" class="input"/>
<input type="file" class="input"/>
<input type="file" class="input"/>
<input id="0">
<input id="1">
<input id="2">
<input id="3">
<input id="4">
<script>
var inputArray = document.getElementsByClassName('input');

for(var i = 0; i < inputArray.length; i++){
    inputArray[i].addEventListener('change',prepareUpload,false);
};

function prepareUpload(event)
{
    var files = event.target.files;
    var fileName = files[0].name;
    document.getElementById("0").value = fileName;
    alert(fileName);
}
</script>

1 个答案:

答案 0 :(得分:-1)

您的ID无效。 看到这个问题:

What are valid values for the id attribute in HTML?

  

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。

以下是我认为您尝试做的一个小演示:

<input type="file" class="input" name="input1" />
<input type="file" class="input" name="input2" />
<input id="input1">
<input id="input2">

var inputArray = document.getElementsByClassName('input');

for(var i = 0; i < inputArray.length; i++){
  inputArray[i].addEventListener('change',prepareUpload,false);
};

function prepareUpload(event)
{
  var files = event.target.files;
  var fileName = files[0].name;
  document.getElementById(event.target.getAttribute('name')).value = fileName;
  alert(fileName);
}

根据用例,您可能希望使用 data 属性而不是名称。