andy1984: Eingabeformular bestimmen

Hallo Leute,

ich will ein Eingabeformular bearbeiten.
Es handelt sich dabei um das E-mail Formular.

Es soll nicht leer sein und soll ein @ Zeichen beinhalten.

Vor dem Absenden soll es kontrolliert werden. Wenn es leer ist funktioniert es, jedoch wenn ich einen Text eingebe wird es gesendet obwohl es kein @ Zeichen beinhaltet

Der code:

<script type="text/javascript">

.....

if ((document.Formular.EMail.value == "") || (document.Formular.Email.value.indexOf ('@') == -1 ))
{
alert ("Bitte geben sie ihre E-Mail ein!");
document.Formular.EMail.focus ();
return false;
}

}
</script>

Danke schon mal für eure Antworten
Viele Grüße
Andy

  1. Hi,

    if ((document.Formular.EMail.value == "") || (document.Formular.Email.value.indexOf ('@') == -1 ))

    Du hast einmal "EMail" und einmal "Email" geschrieben. Das sollte der Grund für das Fehlverhalten sein.
    Diesen Fehler hättest du wohl auch selbst finden können, wenn du die Fehler-Konsole deines Browsers befragt hättest.

    mfG,
    steckl

  2. Hi!

    ich will ein Eingabeformular bearbeiten.
    Es handelt sich dabei um das E-mail Formular.

    Du darfst dich in keinem Fall alleine auf eine clientseitige Prüfung mit JavaScript verlassen.
    Zum einen haben nicht alle User JS aktiviert, zum anderen haben einige User gar nicht die Möglichkeit JS zu nutzen.
    Du mußt alle Daten auch noch serverseitig prüfen, bevor du sie weiterverarbeitest.

    Mit JS kann man hier recht nette Dinge einbauen und den User auf falsch ausgefüllte Formularfelder hinweisen.
    Allerdings empfinde ich aufpoppende Alert-Boxen nicht als guten Weg.
    Solche Alert-Boxen finde ich recht nervig und nicht besonders schön.
    Viel besser wäre es, wenn du z.B. neben dem falsch ausgefüllten Formularfeld einen Hinweistext (eventuell in rot) einblenden würdest.

    Es soll nicht leer sein und soll ein @ Zeichen beinhalten.

    Ich würde hier einen regulären Ausdruck einsetzen, der die Mailadresse auf syntaktische Korrektheit überprüft.
    Du kannst diese Funktion nutzen, wenn du möchtest:

      
    function mailcheck( email )  
    {  
     var expression = /^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$/;  
      
     if ( !expression.test( email ) )  
     {  
      return false;  
     }  
     return true;  
    }  
    
    

    Vor dem Absenden soll es kontrolliert werden.

    Du meinst, beim Absenden (onsubmit).

    jedoch wenn ich einen Text eingebe wird es gesendet obwohl es kein @ Zeichen beinhaltet

    Wenn ich das richtig sehe, dann hast du gar keine Funktion geschrieben?
    Die Prüfung wird sofort ausgeführt, wenn die Seite geladen wird?

    Du solltest eine Funktion erstellen und diese dann bei einem Klick auf den Submit-Button ausrufen.

    Erweitere dein Form-Tag um den Event-Handler onsubmit.

      
    <form name="formularname" action="script.php" method="post" onsubmit="return checkForm();">
    

    Und schreibe dann eine Check-Funktion:

      
    function checkForm()  
    {  
     if ( (document.Formular.EMail.value == "") || (document.Formular.Email.value.indexOf("@") == -1 ) )  
     {  
      window.alert( "Bitte geben sie ihre E-Mail ein!" );  
      document.Formular.EMail.focus ();  
      
      return false;  
     }  
     return true;  
    }  
    
    

    Schöner Gruß,
    rob