2010-11-21 6 views
0

Wie erkenne ich die richtige Anzahl von Textbox (Eingabe Typ = "Text") in einem HTML-Formular mit Javascript. Was ich hier versuche, ist die Zwischensumme zu berechnen, indem die Menge und der Preis angegeben werden.Wie die Anzahl der Textfelder in einem Formular mit Javascript

<script type="text/javascript"> 

function compute(){ 

var quant=new Array(); 
var price=new Array(); 
var stotal=new Array(); 
var tbox=new Array(); 
var elemlent=document.x.elements.length; 

var dib=elemlent /3; 
for(var i=0; i<dib; i++) 
{ 
quant[i] = document.x.elements['qty[i]'].value; 
price[i] = document.x.elements['cost[i]'].value; 
stotal[i]= quant[i] * price[i]; 
tbox[i] = document.x.elements['subtotal[i]']; 


if (tbox[i]) 
{ 
tbox[i].value = stotal[i]; 
} 
} 
} 
</script> 

<body> 

<table border="1"> 

<form name="x"> 
<th>QTY</th> 
<th>COST</th> 
<th>SUBTOTAL</th> 
<td>+</th> 
<?php 
for($i=0;$i<2;$i++){ 
?> 


<tr> 
<td><input type="text" name="qty[<?php echo $i; ?>]" value=""/></td> 
<td><input type="text" name="cost[<?php echo $i; ?>]" value=""/></td> 
<td><input type="text" name="subtotal[<?php echo $i; ?>]" value=""/></td> 
<td><img src="add-icon.png" onmouseover="compute();"></td> 
</tr> 
<?php } ?> 


</form> 
</table> 
</body> 

Ich kann einfach nicht funktionieren, wenn ich für Schleifen hinzufügen.

Können Sie sehen, was mit meinem Code nicht stimmt?

Antwort

2

Wechsel:

['qty[i]'] 

zu:

['qty[' + i + ']'] 

und ähnlich für die anderen die oben genannten Arbeiten zu machen. Ich schlage vor, Sie <input> Elemente ändern Sie die ID, etwas in dieser Richtung zu bieten:

<input type="text" id="qty[<?php echo $i; ?>]" name="qty[<?php echo $i; ?>]" value=""/> 

Dann statt:

quant[i] = document.x.elements['qty[i]'].value; 

Verwendung:

quant[i] = document.getElementById(['qty[' + i + ']']).value; 

Beachten Sie auch, dass Sie gehen Um eine Zeichenfolge zu erhalten, nehme ich an, dass Sie parseInt und/oder :

verwenden möchten

das heißt so etwas wie dieses:

quant[i] = parseFloat(document.getElementById(['qty[' + i + ']']).value); 

Beachten Sie auch, dass Sie auf Fehler prüfen möchten Überprüfung (z wenn jemand "qqaacc" im Preisfeld anstelle von "123.45" eingibt.

+0

Seien Sie vorsichtig, wenn Sie parseInt und parseFloat verwenden: http://www.bennadel.com/blog/2012-Exploring-Javascript-s-parseInt-And-parseFloat-Functions.htm –

Verwandte Themen