fritz222: Kann JavaScript-Funktion nicht aufrufen.

Ich möchte mit folgendem JavaScript-Code eine Formularüberprüfung machen. Das Problem ist, die JavaScript-Funktion wird nicht aufgerufen. Es wird sofort das "action"-Ziel aufgerufen.

JavaScript ist im Browser aktiviert. Ich habe es Bereits mit Firefox 3.55 und IE 6.0 versucht --> erfolglos.

Hier der Code:

<html>  
<head>  
<title>Formular-Überprüfung</title>  
<script type="text/javascript">  
function pruefen(f){  
  	  
	var fehler="&Auml;ndern Sie bitte folgende Punkte:\n\n";  
	if (f.elements["vorname"].value==""){  
		fehler +="Geben Sie bitte einen Vornamen ein.\n";  
	}  
	if (f.nachname.value==""){  
		fehler +="Geben Sie bitte einen Nachnamen ein.\n";  
	}  
	if (f.strasse.value==""){  
		fehler +="Geben Sie bitte eine Strasse und eine Hausnummer ein.\n";  
	}if f.plz.value==""){  
		fehler +="Geben Sie bitte eine Postleitzahl ein.\n";  
	}if (f.ort.value==""){  
		fehler +="Geben Sie bitte einen Ort ein.\n";  
	}if (f.email.value==""){  
		fehler +="Geben Sie bitte eine E-Mail Adresse ein.\n";  
	}else{  
		var re="^[a-z0-9_\.]+@([a-z0-9][a-z0-9-_]+\.)+[a-z]{2,}$";  
		if (! re.test(f.email.value))  
		{  
			fehler +="Geben Sie bitte eine korrekte E-Mail Adresse ein.";  
		}  
	}  
	if (fehler=="&Auml;ndern Sie bitte folgende Punkte:\n")  
	{  
		return true;  
	}else  
	{  
		alert(fehler);  
		return false;  
	}  
}  
  
  </script>  
</head>  
<body>  
  
<form action="formularauswertung3.php" method="post"  name="kontaktformular" onsubmit="return pruefen(this);">  
				<table id="kontaktformular">  
				<tr>  
					<td <?php echo $vorname_mark ?>>Vorname:</td>  
					<td <?php echo $vorname_mark ?>><input type="text" name="vorname" value="<?php echo $vorname  ?>" /></td>  
				</tr>  
				<tr>  
					<td <?php echo $nachname_mark ?>>Nachname:</td>  
					<td <?php echo $nachname_mark ?>><input type="text" name="nachname" value="<?php echo $nachname ?>" /></td>  
				</tr>  
					  
				<tr>  
					<td <?php echo $strasse_mark ?>>Strasse und Nr:</td>  
					<td <?php echo $strasse_mark ?>><input type="text" name="strasse" value="<?php echo $strasse ?>" /></td>  
				</tr>  
				  
				<tr>  
					<td <?php echo $plz_mark ?>>Postleitzahl:</td>  
					<td <?php echo $plz_mark ?>><input type="text" name="plz" value="<?php echo $plz  ?>" /></td>  
				</tr>  
				  
				<tr>  
					<td <?php echo $ort_mark ?>>Ort:</td>  
					<td <?php echo $ort_mark ?>><input type="text" name="ort" value="<?php echo $ort ?>" /></td>  
					</tr>  
					  
				<tr>  
					<td <?php echo $email_mark ?>>E-Mail Adresse:</td>  
					<td <?php echo $email_mark ?>><input type="text" name="email" value="<?php echo $email ?>" /></td>  
				</tr>					  
				  
				  
				<tr>  
					<td></td>	  
					<td><INPUT type="button" value="<< Zur&uuml;ck" onClick="history.go(-1);return true;""/><br /><input type="reset" name="reset" value="Eingaben zurücksetzen" /><br /><input type="submit" name="submit3" value="Eingaben senden" /></td>  
					</tr>  
			</table>  
			<?php  
				  
				echo "$hidden";	  
					  
					?>  
			</form>		  
</body>  
</html>

Entweder bin ich einfach blind und es ist wirklich ein dummer Fehler(dann tuts mir Leid) und sonst mangelts mir an JavaScript Erfahrung :-(

Herzlichen Dank für jede Hilfe.

  1. Hallo!

    Schau doch bitte zuerst einmal auf die Fehlerkonsole (im Firefox Shift-Strg-J), ob da nicht etwas Hilfreiches steht.

    Ansonsten fällt mir noch spontan folgender Fehler auf:

    var fehler="&Auml;ndern Sie bitte folgende Punkte:\n\n";  
    ...  
    if (fehler=="&Auml;ndern Sie bitte folgende Punkte:\n")
    

    Dieser Vergleich macht ohne das zweite "\n" wenig Sinn.

    Gruß, LX

    --
    RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
    RFC 1925, Satz 11a: Siehe Regel 6a
    1. Hallo,

      Ansonsten fällt mir noch spontan folgender Fehler auf:

      var fehler="&Auml;ndern Sie bitte folgende Punkte:\n\n";

      ...
      if (fehler=="&Auml;ndern Sie bitte folgende Punkte:\n")

      
      >   
      > Dieser Vergleich macht ohne das zweite "\n" wenig Sinn.  
        
      Wodurch vermutlich true returned wird.  
        
      Besser wäre wohl, Fehler und Fehlermeldung zu trennen.  
        
      var fehler = false;  
      var fehlerMeldung = "yyyyy";  
        
      und später auf fehler zu testen bzw. den zwischedrin auf true zu setzen, wenn es seinen gibt.  
        
        
      Gruß  
        
      jobo
      
    2. Schau doch bitte zuerst einmal auf die Fehlerkonsole (im Firefox Shift-Strg-J), ob da nicht etwas Hilfreiches steht.

      Ich habe gar nicht gewusst das so eine "Fehlerkonsole" gibt.

      Die hat mich auf den Fehler gebracht:

      ~~~javascript }if f.plz.value==""){
                      fehler +="Geben Sie bitte eine Postleitzahl ein.\n";

        
      habe nach dem if die Klammer '(' vergessen...  
        
      Wie immer in der Programmierung regt man sich fast zu Tode auf, über eine solche Kleinigkeit...  
        
      Auf jeden Fall DANKE an alle die einen Tipp gepostet haben.  
        
      lg fritz222
      
  2. Hallo,

    mit alerts kannst du die einzelnen Schritt in der Funktion testen. Der PHP-Code hat ja beim Testen keinen Sinn. Außerdem empfiehlt es sich, das Ganze einzukürzen auf ein kleines Beispiel:

    <script>
    function pruefe() {
      alert("hallo");
      return false;
    }
    </script>
    <form action="" onsubmit="pruefe()">
    <input type="submit">
    </form>

    Gruß

    jobo

    1. Hi!

      Oder so:

        
       <form action="" onsubmit="return pruefe()">  
      
      

      ?

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. Hallo,

        Hi!

        Oder so:

        <form action="" onsubmit="return pruefe()">

        
        > ?  
          
        Ja, muss man das "returnen"? Ich dachte es reicht, wenn die funktion false returniert.  
          
        Gruß  
          
        jobo
        
        1. Hi!

          Oder so:

          <form action="" onsubmit="return pruefe()">

          
          > > ?  
          >   
          > Ja, muss man das "returnen"? Ich dachte es reicht, wenn die funktion false returniert.  
            
          Ich meine ja - <answer type="telefonjoker" secure="90%" /> - werde mal nachsehen....  
            
            
          off:PP  
            
            
          
          -- 
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)  
          
          
        2. Hi!

          Oder so:

          <form action="" onsubmit="return pruefe()">

          
          > > ?  
          >   
          > Ja, muss man das "returnen"? Ich dachte es reicht, wenn die funktion false returniert.  
            
          Auf die Schnelle habe ich nur das gefunden: <http://www.devguru.com/Technologies/ecmascript/quickref/evhan_onsubmit.html> - Das true/false muß an den Event-Handler übergeben werden.  
            
          off:PP  
            
            
          
          -- 
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)  
          
          
          1. Hallo,

            Auf die Schnelle habe ich nur das gefunden: http://www.devguru.com/Technologies/ecmascript/quickref/evhan_onsubmit.html - Das true/false muß an den Event-Handler übergeben werden.

            Tja, scheint so: http://www.w3schools.com/js/js_form_validation.asp

            Aber ohne "funzt" es auch.

            Wie aber schaut es mit document.getElementById("myform").onsubmit = function() {} aus?

            Gruß

            jobo