作为id属性的输入类型文件验证是数组而不是单个值

时间:2013-01-29 17:46:15

标签: php javascript jquery html

我想验证我的表单

<input type="file" id="file[]">

我只想在上传文件时提交表单,否则会弹出错误信息弹出窗口。 问题是,我已经使代码上传了多个文件。因此,<input type="file">的ID属性为array(file[])

我试过了

  1. document.getElementById('file').value
  2. document.getElementById('file[]').value
  3. document.getElementById('file[3]').value
  4. 但每次它都不起作用。 我通过firebug检查了它,它给出了错误

     document.getElementById(...) // is null.
    

3 个答案:

答案 0 :(得分:1)

您的问题很可能是您的ID中没有方括号([])。

有关详细信息,请参阅What are valid values for the id attribute in HTML?

答案 1 :(得分:1)

您无法创建具有相同ID的多个元素。而不是id使用class ='fileInput'和 使用

var fileArr = document.getElementByClassName(“fileInput”);

然后遍历数组并检查所有文件输入是否有效..

答案 2 :(得分:0)

您必须确保该ID有效且唯一。这似乎是你目前的问题。

但是,ID属性应该用于区分元素和当前组的外部。尝试处理ID值中的某种模式以构建组可能是不可读的,并且更可能导致意外错误(即:多个元素的相同ID或计算错误的元素ID)。

相反,如果你想创建一个包含多个DOM元素的组,你可以考虑使用j class这个易于获取/迭代的属性。

<input name="fname" type="text" class="grp-1" />
<input name="lname" type="text" class="grp-1" />
<input name="file" type="file" class="grp-1" />

通过这种方法,您可以:

var myGroup = $('.grp-1');
var firstInput = myGroup.eq(0);
var secondInput = myGroup.eq(1);

myGroup.foreach(function(index){
    var element = $(this);
    // whatever needs to be validated with the current element
});