HTML Formulareingaben überprüfen

J

Jeydane

Gast
Guten Tag,

in der Schule beschäftigen wir uns zurzeit mit der Erstellung von Formularen und deren Überprüfung auf Richtig- und/oder Vollständigkeit. Gestern habe ich ein simples Formular für ein Ehemaligentreffen erstellt und überprüft werden sollen:

Name, Vorname und Email.

Das Ganze soll mit dem JavaScript realisiert wird, die nötigen Funktionen kann man sich ja bspw. bei SelfHTML anschauen und entsprechend anpassen. Das habe ich meiner Meinung nach auch korrekt getan. Aber irgendetwas muss ja falsch sein, so dass ich keine Fehlermeldung kriege, wenn eines der 3 Felder leer/inkorrekt ist.

HTML:
<html>
<head>
<title>Formulareingaben ueberpruefen</title>

<script type="text/javascript">
function chkFormular () {
         if (document.Formular.name.value == "") {
         alert("Bitte Ihren Namen eingeben!");
         document.Formular.name.focus();
         return false;
         }

         if (document.Formular.vorname.value == "") {
         alert("Bitte Ihren Vornamen angeben!");
         document.Formular.vorname.focus();
         return false;
         }

         if (document.Formular.e-mail.value == "") {
         alert("Bitte Ihre Email angeben!");
         document.Formular.e-mail.focus();
         return false;
         }


         if (document.Formular.e-mail.value.indexOf("@") == -1) {
         alert("Keine E-Mail-Adresse!");
         document.Formular.Mail.focus();
         return false;
         }
</script>


</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#1F29F2" vlink="#A303FE">


<p align="center"><font color="#818181" face="arial" size="+1">Registrierung und Anmeldung für das Ehemaligentreffen des<br>
Fachgymnasiums - Wirtschaft - </font></p>

<p align="center"><font color="#EE950C" face="arial">am Freitag, 17. Dezember 2010 um 20:00 Uhr<br>
im Küsters Hof, Wunstorf </font></p>



<form name="Formular" method="post" onsubmit="return chkFormular ()">

<font face="arial">
<table align="center" width="75%" border="0" cellpadding="2" cellspacing="2">


 <tr>
  <td align="right">Name:</td>
  <td>
  <input name="name" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Geburtsname:</td>
  <td>
  <input name="geburtsname" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Vorname:</td>
  <td>
  <input name="vorname" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Geburtsdatum:</td>
  <td>
  <input name="geburtsdatum" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Straße und Hausnummer:</td>
  <td>
  <input name="straße_hausnummer" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Postleitzahl:</td>
  <td>
  <input name="PLZ" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Ort:</td>
  <td>
  <input name="ort" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">E-Mailadresse:</td>
  <td>
  <input name="e-mail" type="text" size="30" maxlength="30">
  </td>
 </tr>


 <tr>
  <td align="right">Abiturjahrgang:</td>
  <td><select name="abiturjahrgang" size="1">
         <option>Abi 2001</option>
         <option>Abi 2002</option>
         <option>Abi 2003</option>
         <option>Abi 2004</option>
         <option>Abi 2005</option>
         <option>Abi 2006</option>
         <option>Abi 2007</option>
         <option>Abi 2008</option>
         <option>Abi 2009</option>
         <option>Abi 2010</option>
         <option>Abi 2011</option>
         <option>Abi 2012</option>
         <option>Abi 2013</option>
         <option>Abi 2014</option>
      </select>
  </td>
 </tr>


 <tr>
  <td align="right">Ich werde am Ehemaligentrefen am Freitag, den<br>
  17. Dezember 2010 teilnehmen:
  </td>
  <td><select name="abiturjahrgang" size="1">
         <option>Ja. Ich komme ohne Partner.</option>
         <option>Ja. Ich komme mit Partner.</option>
         <option>Nein. Ich komme nicht.</option>

    </select></td>
 </tr>


 <tr>
  <td align="right">Mit dem Absenden, stimme ich der<br>
  <a href="datenschutz.pdf" target="_blank">Datenschutzvereinbarung</a> zu:
  </td>
  <td><input type="submit" value="absenden">
</td>
 </tr>


</table></font></form>

Da ich hier ohne CSS gearbeitet habe, sieht es natürlich nicht sehr schön aus, aber ich hoffe, es genügt, damit ihr den Fehler entdecken könnt. Ich habe schon einige Google-Ergebnisse in Betracht genommen, aber entdecke keinen Fehler.

Damit ihr auch eine Vorstellung habt, wie das Ganze aussehen soll, hier ist das Original.

Ich danke euch schon mal im Voraus.

Freundliche Grüße
jeydane
 
Dir fehlt am Ende des <script>-Blocks eine schließende geschweifte Klammer für die Funktion chkFormular().

Profi-Tip: Mit einer Javascript-Fehlerkonsole, wie sie z. B. Firebug für Firefox hat, kommt man solchen Fehlern sehr schnell auf die Spur :)
 
hi,
welchen browser verwendest du? ich habe firefox und bei mir gehen die fehlermeldungen. ich schätze mal das dir der IE ein wenig probleme bereitet, was ich im zusammenhang mit javascript und IE als programmierer selbst oft zu spüren bekomme.

einfach noch einmal suchen ob alles zu 100% dem standart entspricht. beispiels-weise in deinem fall: deine formular-felder enthalten standardmäßig keinen value. auch hier bin ich mit dem IE schon mal angeeckt. versuche mal
Code:
value="&nbsp;"
.. eventuell aktzeptiert es dann auch der IE...
 
Wenn du die Seite in Firefox lädst und dann die Error Console von Firefox öffnest, wird der Fehler angezeigt.
 
Es fehlt ein "}" vor dem Ende des Scripts.

Ferner solltest du dir darüber im Klaren sein, wie man Inline- und Blockelemente verschachteln darf und wie nicht.
 
ich habe es nicht durchgetestet, aber am besten versuchst du schritt für schritt alles durch.

einfachstes "debug"-tool bei javascript sind alerts. einfach mit /* comment */ alles javascript auskommentieren und testweise alles mit alert ausprobieren. (ob die funktion überhaupt aufgerufen wird usw.)

ich kenne übrigens das so

Code:
onsubmit="chkFormular();"

also ohne leerzeichen, ohne return, mit semikolon
 
Danke für alle Antworten. Die geschweifte Klammer hat das Problem gelöst.

@iGDark: Ich habe sowohl mit Firefox als auch mit dem IE getestet und erhielt das selbe Ergebnis, komisch!

Jedoch wird jetzt die Email nicht überprüft, bzw. ich kann irgendeinen Unsinn eingeben und das Formular wird trotzdem "abgeschickt". Normalerweise wollte ich bezwecken, dass das "@" enthalten sein muss.

HTML:
if (document.Formular.e-mail.value.indexOf("@") == -1) {
         alert("Keine E-Mail-Adresse!");
         document.Formular.e-mail.focus();
         return false;
         }
 
Benenne das Feld "e-mail" mal in "email" (oder so) um. Javascript erlaubt keine Bindestriche in Bezeichnern.
 
Noch ein Tipp am Rande:

Die Hinweise über alert sind eigentlich nicht mehr in Mode. Ruf, falls was fehlt die php einfach mit Parametern auf (z.B.: xy.php?missing=email) und lass dadurch dann entsprechende Hinweise einblenden.
 
Auch nicht unbedingt besser, weil er dann die Seite einmal komplett neu laden muß. Im Zeitalter von Ajax vermeidet man das lieber.

Was alert() angeht, hast du allerdings recht - da richtet man besser in der Webseite direkt Anzeigeelemente für Fehler ein und blendet die dann bei Bedarf ein.
 
Sry, hab ich nicht richtig nachgedacht, man braucht hier weder die Seite neu laden, noch Ajax, man kann ja einfach so nen Hinweis einblenden, ne Interaktion mit dem Server ist gar nicht nötig ;)
 
Denk auch bitte dran das eine JS absicherung nie 100%tig ist da es noch leute igbt die JS abgeschaltet haben ;)
 
Zurück
Oben