2014-10-31 39 views
0

我有類似以下內容的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++; 
} 
+0

每個「」的「id」屬性應該是唯一的。 – 2014-10-31 23:02:03

+0

這是一個僞代碼還是一種方言,或者您是否忘記了條件周圍的「(...)」? – 2014-10-31 23:02:25

+0

「FormElement.elements」集合將包含一個Array Like Object,如果您使用的是「ID」,則您可以循環搜索「

」中的所有輸入。另一個解決方案可能是'document.getElementsByTagName('input')'。 – PHPglue 2014-10-31 23:04:01

回答

0

元素的ID必須是唯一的。

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

因此,在每一行中您都希望itemid的值不同。其次檢查你是否有聲明。圓括號缺失,你將值賦給x而不是比較它。

對於您可以使用getElementByTagName(見VSYNC的答案)

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 
    } 
} 
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]''。無論如何,這就是邏輯。

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,因爲它們必須有一個名字才能成功,並且可以通過它進行訪問。

請注意,上述工作與文檔的結構無關,無論某些表格是否在其他表格中,或者即使控件實際上處於表格中(只要它們與使用form的表單關聯屬性)。表單中的控件將自己的表格屬性自動設置爲其所在的表格。