SamanthaMaster: Überprüfen von Formularfeldern

Hy!!

Bei der Rechnung wird immer nur überprüft ob etwas drinnen steht und nicht ob es das richtige ist!! Könnt ihr mir sagen was falsch ist!!

  
<script type="text/javascript">  
  
window.onload = function() {  
	document.Formular.onsubmit = function() {  
		var errors = [];  
		document.getElementById("falsch").innerHTML = "";  
	  	  
		if (document.Formular.test.value == "" && document.Formular.test.value != "9")  
			errors.push("Testrechnung falsch");  
  
		for(var i=0; i<errors.length; i++)  
			document.getElementById("falsch").innerHTML += "" + errors[i] + "<br>";  
  
		return (errors.length == 0);  
	}  
}  
</script>
~~~<  
  
~~~html
<font color=#FF0000><div id="falsch"></div></font> <form name="Formular" action="mailto:?" method="post" enctype="text/plain">  
  
Name: <input name="benutzername" type="text" size="30" maxlength="30"><br>  
  
E-mail: <input name="mail" type="text" size="30" maxlength="40"><br>  
  
Anfrage:<br> <textarea name="eingabe" cols="40" rows="10"></textarea><br>  
  
4+5= <input name="test" type="text" size="5"><br> <input name="absenden" type="submit" value="Absenden"> </form>

MFG samantha

  1. Hallo,

    Könnt ihr mir sagen was falsch ist!!

    Klar, das da:

      if (document.Formular.test.value == "" && document.Formular.test.value != "9")  
    

    heißt auf deutsch "wenn das Formularfeld leer ist *und* wenn nicht "9" drinsteht".

    Logisch: Wenn es leer ist, steht auch nicht 9 drin, also ergibt der Ausdruck dann immer true``, aber wenn es nicht leer ist, ergibt der Ausdruck immer false, denn der zweite Teil (!=9)wird dann gar nicht mehr geprüft, weil schon der erste (=="") false ergibt – eine UND-Verknüpfung mit false ergibt bekanntlich immer false.

    Gruß, Don P