Untenstehendes Script funktioniert prinzipiell, aber mit zwei Dingen habe ich noch Schwierigkeiten:
1.) Wenn keine Ganzzahl eingegeben wird, soll es ein Alert geben. Das tut es jetzt auch schon, aber es bricht dann nicht ab, sondern berechnet trotzdem den Wert.
Wo soll denn was abbrechen? Du musst dafür sorgen, dass das passiert.
2.) Ich werde sehr viele Formulare haben (ca. 50 Stück), nun soll aber immer das Ergebnis "erg" aus "Menge" * "Wert" von z.B. Form1 auch Form1 zugeordnet werden. Momentan wird (im Beispiel) bei Form2 nichts errechnet.
Du verwendest IDs für deine Felder, dass ist in dem Falle ungünstig, es darf immer nur eine ID mit dem glechen Wert geben.
Einfacher ist es mit name zu arbeiten, dann musst du einfach nur die Referenz auf das aktuelle Formular übergeben.
function check(){
var menge = document.getElementById('menge').value;
if(menge !== "7"){
alert("nur zahlen");
return;
}
}
Die Funktion ist ganz falsch. Auf Zahlen kannst mit Number isNaN oder durch Vergleich mit parseInt() oder parseFloat() testen, je nachdem was du erreichen willst.
<form name="form1">
<input type="hidden" id="preis" name="preis" value="33.23">
<input onKeyUp="check();calcSum();" type="text" id="menge" name="menge" value="" size="3"><span id="erg" name="erg"></span><br>
du kannst hier in den Eventhandler die Referenz auf das Formular übergeben.
<input onkeyup="check(this.form);calcSum(this.form);" name="menge" value="" size="3">
function calcSum(f)
{
var preis = f.preis.value;
var menge = f.menge.value;
var erg = preis * menge;
f.summe.value = erg;
// Hier musst du dir was anderes überlegen.
//document.getElementById('erg').innerHTML = erg;
}
Struppi.
Javascript ist toll (Perl auch!)