lina-: Formularwerte on the fly prüfen

Beitrag lesen

moin Benrd :)

Du hast da einige Fehler in deiner Lösung. Hab sie mal so umgeändert, dass sie funktioniert.

1. Ids sollten nicht doppelt vorhanden sein. Schon gar nicht, wenn du versuchst mit getElementById auf Elemente zuzugreifen. Woher soll dein script denn wissen, ob du nun das erste oder zweite meinst ;)

2. Wenn du eine Funktion in Abhängigkeit eines Wertes aufrufen möchtest - warum tust du das nicht direkt in der If-Verzweigung?

3. Wenn du den Ids Eindeutigkeit verleihst, indem du ihnen Nummern gibst, kannst du deine Funktionen auch super mit der entsprechenden Nummer aufrufen und sie wissen, welche Elemente sie gerade ansprechen sollen.

<script type="text/javascript">
<!--

  
function check(form){  
  var menge = document.getElementById('menge'+form).value;  
//Ich nehme an, du willst nicht nur auf "7" prüfen sondern auf numerischen Wert  
//Falls es doch die 7 sein soll - überdenke zwingend deine Fehlermeldung ;)  
  if(isNaN(menge)){  
   alert("nur zahlen");  
  }  
  else{  
//Aufruf der Berechnungsfunktion - nur wenn es sich um eine Zahl handelt  
    calcSum(form);  
  }  
}  
  
function calcSum(form) {  
  //Die Berechnungsform kennt die Formularnummer und spricht die jetzt eindeutigen Elemente damit an  
  var preis = document.getElementById('preis'+form).value;  
  var menge = document.getElementById('menge'+form).value;  
  var erg =  preis * menge;  
  document.forms[form].summe.value = erg;  
  document.getElementById('erg'+form).innerHTML = erg;  
  
}  

//-->
</script>

  
</head>  
<form name="form1">  
<input type="hidden" id="preis0" name="preis" value="33.23">  
<!-- nur die Funktion check aufrufen... sie übernimmt den Rest-->  
<input onKeyUp="check(0);" type="text" id="menge0" name="menge" value="" size="3"><span id="erg0" name="erg"></span><br>  
<input type="text" name="summe" value="0" readOnly><br>  
</form>  
  
<hr>  
  
<form name="form2">  
<input type="hidden" id="preis1" name="preis" value="2">  
<!-- Funktion check aufrufen - als Parameter übergibst du die Nummer des Formulars-->  
<input onKeyUp="check(1);" type="text" id="menge0" name="menge" value="" size="3"><span id="erg1" name="erg"></span><br>  
<input type="text" name="summe" value="0" readOnly><br>  
</form>  

liebe Grüße aus Berlin
lina-

--
Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)