Javascript 如何引用表格单元格中的输入值进行循环验证?
我有一个HTML表,其中包含重复的输入行,如下所示:Javascript 如何引用表格单元格中的输入值进行循环验证?,javascript,html,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="item
<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++;
}
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';
}
}
元素的ID必须是唯一的
<input id="itemid" name="itemid" type="text" size="20" />
因此,在每一行中,您都希望itemid具有不同的值。第二,检查你的陈述是否正确。缺少括号,您将一个值赋给x,而不是比较它
对于循环,您可以使用getElementByTagName,请参见vsync的答案。Felix说的是真的,id必须是唯一的。如果不使用,也可以将其删除 但是尝试在tableInput中的所有输入上循环
也许你应该试试这样:
i=0;
while i < document.getElementById("tableInput").tBodies.length {
x = document.getElementById("tableInput").tBodies[i].input.value);
if x = "" {
errorMsg = 1;
}
i++;
}
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';
}
}
如果inVals[4]为空,则错误[4]将包含“必需错误”。无论如何,这就是逻辑。不清楚你想做什么。您可以使用窗体的集合获取窗体中的所有控件,例如
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,因为它们必须有一个成功的名称,并且可以通过该名称访问
请注意,无论文档的结构如何,不管某些控件是否在表中,或者即使控件实际上在表单中,只要它们使用属性与表单关联,上述操作都有效。表单中的控件的form属性自动设置为它们所在的表单。每个控件的id属性都应该是唯一的。这是伪代码还是方言,还是您忘记了。。。围绕这些条件?FormElement.elements集合将包含一个类似数组的对象,如果您正在使用它,则可以在其中循环所有输入,而无需id。另一个解决方案可以是document.getElementsByTagName'input'。@PHPglue-他在这里没有表单元素,这并不是那么简单。