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:
Und hier dann der Javascript Code dazu:
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?
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?