onblur Ereignis wird nur einmal ausgeführt?

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich habe ein kleines Problem, das mich schier zur Verzweiflung bringt.

Ich habe eine Tabelle mit "input- Feldern". Beim verlassen der Felder soll das Ereignis "onblur" ausgelöst werden und eine Funktion aufrufen. Beim ersten Mal in das Feld springen tut sie das auch. Doch wenn ich ein zweites Mal in das Feld gehe und dieses dann verlasse, wird die Funktion nicht erneut aufgerufen und ich weiß nicht warum.

Hier der html- Code der Textstelle:

HTML:
<table border =0 cellpadding=2 cellspacing=2 style = 'empty-cells:show'>
<thead>
<tr bgcolor=#C8C8F0>
   <th style="width:5">Anzahl:</th>
   <th style="width:20">Artikel:</th>
   <th style="width:10">E-Preis netto:</th>
   <th style="width:10">Summe netto:</th>
   <th style="width:10">E-Preis brutto:</th>
   <th style="width:10">Summe brutto:</th>
   <th style="width:10">geliefert am:</th>
   <th>Rechnungs-Nummer:</th>
</tr>
</thead>
<tbody id = "bestelltabelle">
<tr>
   <td><input type="text" name="anzahl1" value="" size = "5" onblur = "rechnen('anzahl',this)"></td>
   <td><input type="text" name="artikel1" value="" size = "20"></td>
   <td><input type="text" name="epreisn1" value="" size = "10" onblur = "rechnen('epreisn',this)"></td>
   <td><input type="text" name="spreisn1" value="" size = "10"></td>
   <td><input type="text" name="epreisb1" value="" size = "10" onblur = "rechnen('epreisb',this)"></td>
   <td><input type="text" name="spreisb1" value="" size = "10"></td>
   <td><input type="text" name="geliefert_am1" value="" size = "10"></td>
   <td><input type="text" name="rechnungs_nr1" value="" onkeydown = "tastepruefen(event,this)"></td>
</tr>
</tbody>
<tfoot>
<tr>
   <td></td>
   <td></td>
   <td>Summe netto:</td>
   <td><input type="text" name="summe_netto" size="10" readonly></td>
   <td>Summe brutto:</td>
   <td><input type="text" name="summe_brutto" size="10" readonly></td>
   <td></td>
   <td></td>
</tr>
</tfoot>
</table>

Und hier dann der Javascript Code dazu:

Code:
function rechnen(aufruf,caller)
{
	caller.onblur = null;
	var zeile = ZeileErmitteln(caller.parentNode.parentNode);  //Zeilennummer wird berechnet
	var summen,summeb;
	var anzahl = document.getElementsByName('anzahl' + zeile)[0].value;
	var epreisn = document.getElementsByName('epreisn' + zeile)[0].value;
	var epreisb = document.getElementsByName('epreisb' + zeile)[0].value;
	var gsummen = document.getElementsByName('summe_netto')[0].value;
	var gsummeb = document.getElementsByName('summe_brutto')[0].value;
	
	gsummen = kommainpunkt(gsummen);
	gsummeb = kommainpunkt(gsummeb);
	
	if (anzahl != "" && (epreisn != "" || epreisb != ""))
	{
		
		if (epreisn != "")
		{
			
			epreisn = kommainpunkt(epreisn);		//E-Preis netto wird in am. Schreibweise umgewandelt zur Berechnung in JS
			summen = anzahl * epreisn;				//Summe netto wird berechnet
			epreisb = epreisn * 1.19;				//E-Preis brutto wird berechnet (am. Schreibweise liegt vor!)
			epreisb = Math.round(epreisb*100)/100;	//E-Preis brutto wird gerundet und auf 2 Nachkommastellen begrenzt
			summeb = anzahl * epreisb;				//Summe brutto wird berechnet
	
		}
		if (epreisb != "")
		{
			epreisb = kommainpunkt(epreisb);		//E-Preis brutto wird in am. Schreibweise umgewandelt zur Berechnung in JS
			summeb = anzahl * epreisb;				//Summe brutto wird berechnet
			epreisn = (epreisb/119)*100;			//E-Preis netto wird berechnet (am. Schreibweise liegt vor!)
			epreisn = Math.round(epreisn*100)/100;	//E-Preis netto wird gerundet und auf 2 Nachkommastellen begrenzt
			summen = anzahl * epreisn;				//Summe netto wird berechnet

		}
		
		if (gsummen == "")
		{
			gsummen = 0;
		}
		if (gsummeb == "")
		{
			gsummeb = 0;
		}
		
		gsummen = summen;
		gsummeb = summeb;
		
		summen = punktinkomma(summen);			//Summe netto wird in dt. Schreibweise umgewandelt zur Darstellung
		summeb = punktinkomma(summeb);			//Summe brutto wird in dt. Schreibweise umgewandelt zur Darstellung
		epreisb = punktinkomma(epreisb);		//E-Preis brutto wird in dt. Schreibweise umgewandelt zur Darstellung
		epreisn = punktinkomma(epreisn);		//E-preis netto wird in dt. Schreibweise umgewandelt zur Darstellung
		gsummen = punktinkomma(gsummen);
		gsummeb = punktinkomma(gsummeb);
		
		document.getElementsByName('epreisb'+zeile)[0].value = epreisb;
		document.getElementsByName('spreisn'+zeile)[0].value = summen;
		document.getElementsByName('spreisb'+zeile)[0].value = summeb;
		document.getElementsByName('summe_netto')[0].value = gsummen;
		document.getElementsByName('summe_brutto')[0].value = gsummeb;
		document.getElementsByName('epreisn'+zeile)[0].value = epreisn;
		
		
	}
}

Hintergrund ist folgender: Wenn man die anzahl und einen Preis eines Artikels eingibt, soll der Rest selbst berechnet werden. Beim ersten Mal durchgehen, wird das auch noch getan. Doch wenn ich nun eine Eingabe korrigieren möchte (z.B. neue anzahl eingeben), dann aktualisiert er die Felder nicht mehr, als wenn die Funktion gar nicht mehr aufgerufen wird.

Kann mir jemand helfen den Fehler zu finden?
 

Neue Beiträge

Zurück