Die Formularfelder sind alle Strings und müssen vor Berechnungen und Vergleichen zu Zahlen umgewandelt werden!
Dafür habe ich eine funktion num(string) geschrieben.
Beispiel-Quelltext:
<html>
<head>
<script type="text/javascript">
<!--
function berechnung()
{
var form=document.form1
form.produkt1.value = num(form.stueck1.value) * num(form.preis1.value)
form.produkt2.value = num(form.stueck2.value) * num(form.preis2.value)
form.gesamt.value = num(form.produkt1.value) + num(form.produkt2.value)
}
// Zahlenfelder:
function num(string,ganzzahl) // Wandelt einen String in eine Zahl um
// Parameter ganzzahl kann weggelassen werden. Sonst wenn true: ganze Zahlen erzeugen
{
string = string.replace(",",".") // Komma zu Punkt umwandeln. Wenn . selbst ersetzt werden soll, evtl. mit . maskieren, da der . ein RegExp-Steuerzeichen ist.
var zahl = parseFloat(string) // String zu Zahl, sonst ist z. B. "10" < "2". Buchstaben nach der Zahl werden ignoriert. Kann NaN zurückliefern, z. B. bei leerem String "" oder wenn er mit Buchstaben anfängt, z. B. "a1".
if( isNaN(zahl) ) zahl=0
if(ganzzahl) zahl=Math.round(zahl)
return zahl
// Wichtig: Wenn Feldinhalt vom Rückgabewert abweicht, dann Feldinhalt durch Rückgabewert ersetzen
// Aber nicht bei Live-Umwandlung per onkeyup im Formelement, sonst werden Dezimaltrenner, Nachkommastellen und Nachkommanullen abgeschnitten.
}
//-->
</script>
</head>
<body>
<form name=form1>
Stück:
<input name=stueck1 size=8>
Preis:
<input name=preis1 size=8>
Produkt:
<input name=produkt1>
<BR>
Stück:
<input name=stueck2 size=8>
Preis:
<input name=preis2 size=8>
Produkt:
<input name=produkt2>
<BR>
<BR>
<input type=button onclick=berechnung() value="Berechnen" style="background-color:#00FF00">
Summe:
<input name=gesamt><BR>
</form>
Weitere Formularfunktionen:<BR>
<a href=http://www.bitwelt.de/javascript/formulare/pflichtfelder.htm target=_blank>www.bitwelt.de/javascript/formulare/pflichtfelder.htm</a>
</body>
</html>