Werteübergabe bei mehreren gleichen Feldern

devconproductions

Grünschnabel
Ich habe hier ein Formular mit zwei Reihen, die namen sind alle gleich das hat den grund das ich diese später mit php in array einlese.
Funktion: Ich gebe in das Feld menge die Anzahl des Produktes ein und in preis die einzelsumme und will das dann in gesamtsumme das ergebnis herauskommt.
Das klappt beim ersten formular ohne problem, beim zweiten "Datensatz" wird das ergebnis des ersten ergebnisses im ersten feld überschrieben. Wer hat eine Idee wie ich das ergebnis jeweils in der richtigen Zeile haben. Hier auch das JavaScript und der link zum script zum selber gucken.
http://www.devcon-productions.net/gepreis.php
Code:
function addiere(menge,preis)
{ 
		
	var summeadd= menge[0]*preis[0] ;
	var summeadd1= menge[1]*preis[1] ;
	
	document.payform.elements['gesamtpreis[0]'].value=summeadd;
	document.payform.elements['gesamtpreis[1]'].value=summeadd1;

			
}
</script>
HTML:
<form name="payform">
<table border="0">

<tr>
    <td><input name="menge[0]" type="text" size="10" id="menge"></td>
    <!--<td><input name="leistung[]" type="text" id="leistung" size="60" ></td>-->
    <td><input name="preis[0]" type="text" id="preis" 
	onBlur="addiere(document.forms['payform'].elements['menge[0]'].value,document.forms['payform'].elements['preis[0]'].value)"></td>
    <td><input name="gesamtpreis[0]" ></td>
</tr>

<tr>
    <td><input name="menge[1]" type="text" size="10" id="menge"></td>
    <!--<td><input name="leistung[]" type="text" id="leistung" size="60" ></td>-->
    <td><input name="preis[1]" type="text" id="preis" 
	onBlur="addiere(document.forms['payform'].elements['menge[1]'].value,document.forms['payform'].elements['preis[1]'].value)"></td>
    <td><input name="gesamtpreis[1]" ></td>
</tr>

<table>
</form>
 
Bevor ich dir auf irgendeine Art antworte:
Auch deine Tastatur hat eine SHIFT-Taste (sogar zwei und eine Caps-Lock Taste). Es ist unwahrscheinlich, dass sie kaputt ist, also halte dich bitte an die gültige deutsche Rechtschreibung. Du hast beim Registrieren für dieses Forum der Nettiquette zugestimmt und dich damit auch verpflichtet leserliche Beiträge zu verfassen.

Der Fehler besteht ganz einfach darin, dass du der Funktion immer nur die Werte übergibst, die aktuell geändert wurden, aber mit der Funktion immer alle Gesamtwerte daraus berechnen. Die Funktion kennt also immer nur die aktuellen Werte, soll aber alle berechnen. Du vereinzelst das am besten- Schlauer wäre also etwas wie das:
Javascript:
function addiere(intFeldID) {
    var form =  document.forms['payform'];
    form.elements['gesamtpreis['+ intFeldID +']'].value=
        form.elements['menge['+ intFeldID +']'].value * 
        form.elements['preis['+ intFeldID +']'].value;
}
HTML:
... <input name="preis[1]" type="text" id="preis" onblur="addiere(1)"> ...
Hab's aber nicht getestet, könnten noch kleine Fehler drin sein.

Ganz nebenbei gibt es soetwas wie w3c-Standards, die u.a. besagen, dass Events klein geschrieben werden.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück