如何在表格单元格中引用输入值进行循环验证?

时间:2014-10-31 23:00:25

标签: javascript html

我有一个HTML表,其中重复的输入行类似于以下内容:

<table id="tableInput">
  <thead>
  <tr>
    <th>Col 1</th>
    <th>Col 2</th>
  </tr>
  </thead>

  <tbody id='abc'>
  <tr>
    <td><input id="itemid" name="itemid"  type="text" size="20" /></td>
    <td>Col2 desc</td>
  </tr>
  <tr>
    <td><input id="itemid" name="itemid"  type="text" size="20" /></td>
    <td>Col2 desc</td>
  </tr>
  </tbody>
</table>

如何在验证循环中引用输入ID?类似的东西:

i=0;
while i < document.getElementById("tableInput").tBodies.length {
  x = document.getElementById("tableInput").tBodies[i].input.value);
  if x = "" {
      errorMsg = 1;
  }
 i++;
 }

4 个答案:

答案 0 :(得分:0)

元素的ID必须是唯一的。

<input id="itemid" name="itemid"  type="text" size="20" />

因此,在每一行中,您需要itemid的不同值。其次检查你是否陈述。缺少括号,您将x赋值,而不是比较它。

对于循环,您可以使用getElementByTagName(请参阅vsync的答案)

答案 1 :(得分:0)

费利克斯说的是真的,id 必须才是唯一的。 (如果你不使用它,你也可以删除它)

但请尝试循环tableInput内的所有输入。

var scope = document.getElementById('#tableInput');
var inputs = scope.getElementsByTagName('input');

// traverse on all the input elements inside "tableInput"
for( var i = inputs.length; i--; ){
  // if some input has no value then..
  if( !inputs[i].value ){
    errorMsg = 1;
    // inputs[i].id  // access the ID
  }
}

答案 2 :(得分:0)

也许你应该尝试类似的东西:

var ipts = document.getElementsByTagName('input'), inVals = [], errors = [];
for(var i=0,l=ipts.length; i<l; i++){
  var ip = ipts[i];
  if(ip.type === 'text'){
    inVals.push(ip.value);
  }
}
for(var i in inVals){
  if(inVals[i] === ''){
    errors[i] = 'required error';
  }
}
如果errors[4]'required error'

inVals[4]将包含''。无论如何,这是逻辑。

答案 3 :(得分:0)

目前还不清楚你要做什么。您可以使用其elements集合获取表单中的所有控件,例如

var form = document.getElementById('tableInput');
var controls = form.elements;
for (var i=0, iLen=controls.length; i<iLen; i++) {

  // do stuff with controls[i]

  // to do stuff with just input elements
  if (controls[i].tagName.toLowerCase() == 'input') {
    console.log(controls[i].name);
  }

  // and so on…

}

如上所述,元素ID 应该是唯一的,但如果它们不是,则不会发生任何严重的事情。它只是使 getElementById 有点无用。但是表单控件应该很少需要id,因为它们必须具有成功的名称并且可以通过它访问。

请注意,无论文档的结构如何,上面的工作都是有效的,有些是在表中而有些不在表中,或者即使控件实际上是在表单中(只要它们与表单相关联{{ 3}}属性)。表单中的控件将表单属性自动设置为他们所在的表单。