# Formularüberprüfung mit Javaschript ohne Popup



## virtuallunas (4. April 2004)

Hallo zusammen,

lange habe ich auf der Seite gesucht, aber leider noch keine Lösung für mein Problem gefunden! Ich möchte gern ein Anmeldeformular clientseitig überprüfen. Soweit habe ich das Script auch. Doch leider kommen die Fehlermeldung in einem Popup-Fenster. Ich möchte aber gern, daß die Fehlermeldungen jeweils unter den Eingabefeldern erscheint. Leider weiß ich absolut nicht wie ich das realisieren kann. Ich hoffe, daß mir irgendjemand von Euch weiterhelfen kann. Ich weiß zumindest nicht mehr weiter...

Anbei der Quellcode der Seite:

```
<script type="text/javascript">
<!--
function chkanmeldung()
{
if(document.anmeldung.user.value == "")  {
   alert("Bitte Ihren gewünschten Benutzernamen eingeben!");
   document.anmeldung.user.focus();
   return false;
   {

}
 if(document.anmeldung.Vorname.value == "")  {
   alert("Bitte Ihren Vornamen eingeben!");
   document.anmeldung.Vorname.focus();
   return false;
  }
 if(document.anmeldung.Name.value == "") {
   alert("Bitte Ihren Nachnamen eingeben!");
   document.anmeldung.Name.focus();
   return false;
  }
 if(document.anmeldung.Strasse.value == "") {
   alert("Bitte Ihren Strasse eingeben!");
   document.anmeldung.Strasse.focus();
   return false;
  }
 if(document.anmeldung.Hausnummer.value == "") {
   alert("Bitte Ihren Hausnummer eingeben!");
   document.anmeldung.Hausnummer.focus();
   return false;
  }
 if(document.anmeldung.PLZ.value == "") {
   alert("Bitte Ihre PLZ eingeben!");
   document.anmeldung.PLZ.focus();
   return false;
  }
 if(document.anmeldung.Wohnort.value == "") {
   alert("Bitte Ihren Wohnort eingeben!");
   document.anmeldung.Wohnort.focus();
   return false;
  }
 if(document.anmeldung.Land.value == "such Dir eins aus") {
   alert("Bitte das richtige Land auswählen!");
   document.anmeldung.Land.focus();
   return false;
  }
 if(document.anmeldung.Email.value == ""
|| document.anmeldung.Email.value.match(/^[a-zA-Z0-9_\.-]{2,}@[a-z0-9-]{3,}\.[a-z]{2,4}) {
   alert("Bitte Ihre gültige E-Mail-Adresse eingeben!");
   document.anmeldung.Email.focus();
   return false;
  }
 if(document.anmeldung.Tag.value == "Tag"
   || document.anmeldung.Monat.value == "Monat"
   || document.anmeldung.Jahr.value == "Jahr") {
   alert("Bitte Ihr Alter eingeben!");
   document.anmeldung.Tag.focus();
   return false;
  }
}
//-->
</script>
```
und noch das Script für das Formular:

```
<form name="anmeldung" method="POST" action="mailer.php" onSubmit="return chkanmeldung()">
              <div align="center">
            <table border="0" cellpadding="0" cellspacing="0" width="400">
              <tr>
        <td><font size="1"><b>Benutzername*</b></font></td>
        <td><input type="text" name="user" size="30"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Vorname*</b></font></td>
        <td><input type="text" name="Vorname" size="30"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Name*</b></font></td>
        <td><input type="text" name="Name" size="30"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Strasse*</b></font></td>
        <td><input type="text" name="Strasse" size="30"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Hausnummer*</b></font></td>
        <td><input type="text" name="Hausnummer" size="30" maxlength="4"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>PLZ*</b></font></td>
        <td><input type="text" name="PLZ" size="30" maxlength="6"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Wohnort*</b></font></td>
        <td><input type="text" name="Wohnort" size="30"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Land*</b></font></td>
        <td><select name="Land">
        <option value="such Dir eines aus">such Dir eines aus</option>
    ...
        </select></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Emailadresse*</b></font></td>
        <td><input type="text" name="Email" size="30"></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>Geburtsdatum*</b></font></td>
        <td><select name="Tag">
            <option value="Tag">Tag</option>
            <option value="01">01</option>
        ...
          </select><select name="monat">
          <option value="Monat">Monat</option>
          <option value="01">01</option>
          ...
          </select><select name="Jahr">
          <option value="Jahr">Jahr</option>
          <option value="1990">1990</option>
         ...
          </select></td>
              </tr>
              <tr>
        <td></td>
        <td></td>
              </tr>
              <tr>
        <td><font size="1"><b>eigene Webseite?</b></font></td>
        <td><input type="text" name="Webseite" size="30" value="www.deine-seite.de"></td>
              </tr>
              <tr>
                <td></td>
                <td></td>
              </tr>
            </center>
            <tr>
              <td align="center">
                <p align="right"></td>
              <td align="center">
                <p align="left"><input type="submit" value="Abschicken" title="submit"><input type="reset" value="Löschen" title="löschen"></td>
            </tr>
          </table>
        </div>
        <center>
        <p>&nbsp;</p>
        </form>
```

Vielen Dank für eventuelle Hilfe
Virtuallunas


----------



## split (4. April 2004)

*nur so ne Idee...*

(ohne deinen Code durchgelesen zu haben...)

Du könntest unter jedes Textfeld ein div einbauen, welches am Anfang leer ist.
Bei einem Fehler könntest du in das jeweilige div die Fehlermeldung schreiben.

Das heißt

alert("Bitte Ihre PLZ eingeben!");

wird zu

document.getElementById("divId").innerHTML = "Bitte Ihre PLZ eingeben!";


----------



## virtuallunas (4. April 2004)

*Danke*

DANKE!
Deine Idee hat geholfen, aber nun habe ich folgendes Problem:
Nachdem der User nun das fehlende/falsche Feld richtig ausgefüllt hat, verschwindet aber die Fehlermeldung nicht. D.h. bei dem User erscheint der Eindruck, daß er immer noch einen Fehler in dem Feld hat obwohl er es korrekt ausgefüllt hat.

Kann mir hier bei dem vorraussichtlich letzten Problem noch jemand helfen?

Vielen Dank im Voraus!
Virtuallunas


----------



## split (4. April 2004)

Dann musst du das onSubmit noch einmal folgendermaßen ändern:
	
	
	



```
onSubmit="return chkanmeldung();"

//wird zu
onSubmit="unsetErrors(); return chkanmeldung();"
```
Dann schreibst du dir noch die Funktion unsetErrors() in den Inhalt aller divs wieder löscht.


----------



## virtuallunas (4. April 2004)

*Aber....*

wie schreibe ich mir die Funktion unsetErrors()
Sorry, aber weder hier noch bei selfhtml habe ich dazu etwas gefunden.

Danke!
Virtuallunas


----------



## split (4. April 2004)

Du musst sie ja nicht unsetErrors() nennen, war nur ein Beispielname 

```
<script language="JavaScript">
<!--
    function unsetErrors() {
        document.getElementById("divId").innerHTML = "";
    }
//-->
</script>
```
...und das dann eben für jedes div mit entsprechender ID.
Sorry, mein Fehler, ich hab mich unverständlich ausgedrückt


----------



## virtuallunas (5. April 2004)

*Ich weiß...*

das ich mich langsam etwas blöd anstellen, aber...
Das mit der Fehlermeldung im Formular habe ich jetzt hingekriegt. Danke!
Das mit der Aktualisierung habe ich auch hingekriegt. Danke!

Aber mein nächstes Problem, was sich dabei nun stellt ist, daß er die Felder des Formulars in einer Tabelle komplett verschiebt.
Ich habe zu jedem Feld mehrere Fehlermeldungen (Zeichenanzahl, Buchstaben-Zahlen und ob das Feld leer ist). Nun schreibt er von der Logik her alle drei Fehlermeldungen untereinander (je nachdem welche momentan gültig ist). Ich dachte aber eigentlich, daß es möglich ist, dafür nur eine Zeile zu nutzen. D.h. wenn im Feld Zahlen sind, schreibt er die Fehlermeldung genau in die gleiche Zeile wie wenn die Eingabe zu kurz ist.
Das ist echt unschön, wenn sich das ganze Formular um 3 Fehlermeldungs-Zeilen verschiebt, man aber nur eine sieht.
Ich kann mir vorstellen, daß das einige Blödsinn finden, aber mir ist es schon wichtig.
Desweiteren frage ich mit der Funktion !isNaN ab, ob im Feld Vorname bzw. Nachname Zahlen vorkommen. Dies funktioniert solange nur Zahlen im Feld sind. Tauchen aber nach den Zahlen Buchstaben auf, erkennt er das nicht mehr als Fehler. Weiß hier jemand, wie ich das einfacher abfragen kann, damit in den Feldern wirklich nur Buchstaben auftauchen und keine Zahlen?

Viele Grüße
Virtuallunas


----------



## split (5. April 2004)

Das letzte (mit den Buchstaben) kannst du mit einem regulären Ausdruck lösen:
	
	
	



```
var regEx = /^[a-z]*$/isU;
if(Textfeld.test(regEx)) {
    //true
}
else {
    //false
}
```
Der reguläre Ausdruck lässt *nur* Buchstaben (a-z und A-Z) zu!

Dein erstes Problem habe ich nicht ganz verstanden: Willst du das - unabhängig der Fehlermenge - immer nur maximal eine Fehlermeldung ausgegeben wird (sortiert nach Priorität der Meldung), oder willst du das immer soviele Fehlermeldungen ausgegeben werden, wie gefunden werden?

PS: Kannst du bitte nochmal dein jetziges Script zum Einsetzen der Fehlermeldungen posten?


----------



## virtuallunas (5. April 2004)

*Danke split...*

das Du Dir soviel Mühe mit mir gibst...
Aber jetzt weiß ich nicht mehr wo ich denn von Dir genannten Ausdruck unterbringen soll.
Anbei nochmal das Script zur Überprüfung, welches nun immer größer wird... 

```
<script type="text/javascript">
<!--
function chkanmeldung()
{ if(document.anmeldung.user.value == "")  {
   document.getElementById("err_user").innerHTML = "Bitte Benutzernamen eingeben!";
   document.anmeldung.user.focus();
   return false;  }
  if(document.anmeldung.user.value.length <5  ){
    document.getElementById("err_user2").innerHTML = "Bitte mindestens 5 Zeichen!";
    document.anmeldung.user.focus();
    return false;  }
    if(document.anmeldung.user.value(regEx)){
document.getElementById("err_user1").innerHTML = "Bitte keine Sonderzeichen!";
document.anmeldung.user.focus();
return false;}
   if(document.anmeldung.Vorname.value == "") {
   document.getElementById("err_vname").innerHTML = ("Bitte Vornamen eingeben!");
   document.anmeldung.Vorname.focus();
   return false;  }
  if(document.anmeldung.Vorname.value == /^[a-z][A-Z]/){
document.getElementById("err_vname1").innerHTML = "Bitte keine Zahlen!";
document.anmeldung.Vorname.focus();
return false;}
if(document.anmeldung.Vorname.value.length <3  ){
    document.getElementById("err_vname2").innerHTML = "Bitte kompletten Vornamen!";
    document.anmeldung.Vorname.focus();
    return false;
  }
 if(document.anmeldung.Name.value == "") {
   document.getElementById("err_name").innerHTML = "Bitte Nachnamen eingeben!";
   document.anmeldung.Name.focus();
   return false;
  }
  if(document.anmeldung.Name.value == /^[a-z][A-Z]/){
document.getElementById("err_name1").innerHTML = "Bitte keine Zahlen!";
document.anmeldung.Name.focus();
return false;
}
if(document.anmeldung.Name.value.length <5  ){
    document.getElementById("err_name2").innerHTML = "Bitte kompletten Nachnamen!";
    document.anmeldung.Name.focus();
    return false;
  }
 if(document.anmeldung.Strasse.value == "") {
   document.getElementById("err_strasse").innerHTML = "Bitte Strasse eingeben!";
   document.anmeldung.Strasse.focus();
   return false;
  }
  if(document.anmeldung.Strasse.value == /^[a-z][A-Z]/){
document.getElementById("err_strasse1").innerHTML = "Bitte keine Zahlen!";
document.anmeldung.Strasse.focus();
return false;
}
 if(document.anmeldung.Hausnummer.value == /^[a-z][A-Z][0-9]/) {
   alert("Bitte Ihren Hausnummer eingeben!");
   document.anmeldung.Hausnummer.focus();
   return false;
  }
 if(document.anmeldung.PLZ.value == /^[0-9]/) {
   alert("Bitte Ihre PLZ eingeben!");
   document.anmeldung.PLZ.focus();
   return false;
  }
 if(document.anmeldung.Wohnort.value == "") {
   alert("Bitte Ihren Wohnort eingeben!");
   document.anmeldung.Wohnort.focus();
   return false;
  }
 if(document.anmeldung.Land.options.value == "") {
   alert("Bitte das richtige Land auswählen!");
   document.anmeldung.Land.focus();
   return false;
  }
 if(document.anmeldung.Email.value == "") {
   alert("Bitte Ihre E-Mail-Adresse eingeben!");
   document.anmeldung.Email.focus();
   return false;
  }
  if(document.anmeldung.Email.value.match(/^[a-zA-Z0-9_\.-]{2,}@[a-z0-9-]{3,}\.[a-z]{2,4}|museum$/)) {
   alert("Bitte Ihre gültige E-Mail-Adresse eingeben!");
   document.anmeldung.Email.focus();
   return false;
  }
 if(document.anmeldung.Tag.options.value == "Tag") {
   alert("Bitte gib Deinen Geburtstag an!");
   document.anmeldung.Tag.focus();
   return false;
  }
  if(document.anmeldung.Monat.options.value == "Monat") {
  alert("Bitte gib Deinen Geburtsmonat an!");
  document.anmeldung.Monat.focus();
  return false;
  }
   if(document.anmeldung.Jahr.options.value == "Jahr") {
  alert("Bitte gib Deinen Geburtsjahr an!");
  document.anmeldung.Jahr.focus();
  return false;
  }
}
//-->
<!--
    function unsetErrors() {
        document.getElementById("err_user").innerHTML = "";
        document.getElementById("err_user1").innerHTML = "";
        document.getElementById("err_user2").innerHTML = "";
        document.getElementById("err_vname").innerHTML = "";
        document.getElementById("err_vname1").innerHTML = "";
        document.getElementById("err_vname2").innerHTML = "";
        document.getElementById("err_name").innerHTML = "";
        document.getElementById("err_name1").innerHTML = "";
        document.getElementById("err_name2").innerHTML = "";
        document.getElementById("err_strasse").innerHTML = "";
        document.getElementById("err_strasse1").innerHTML = "";
    }
//-->
</script>
```
Und im Formular habe ich nun die Fehlermeldungen eingebaut, aber dadurch bauscht sich das Formular auf, denn wenn ich Feld user bearbeiten lassen, macht er in den anderen Feldern schon den Platz für die Fehlermeldungen der anderen Felder. Richtig, ich möchte, daß immer nur eine Fehlermeldung ausgegeben wird pro Feld (wenn vorhanden) und das nach Priorität. Aber wie lege ich die Priorität fest? Nach der Auflistung in der funktion chkanmeldung?
Anbei auch nochmals das Formularscript mit den entsprechend eigepflegten Fehlermeldungen.

```
<form name="anmeldung" method="POST" action="mailer.php" onSubmit="unsetErrors(); return chkanmeldung()">
              <div align="center">
            <table border="0" cellpadding="0" cellspacing="0" width="400">
              <tr>
        <td height="35" width="120"><b>Benutzername*</b></td>
        <td height="35"><input type="text" name="user" size="20" maxlength="15"></td>
        <td height="35"><font size="1" color="#FF0000"><div ID = "err_user"></div><div ID = "err_user1"></div><div ID = "err_user2"></div></font></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Vorname*</b></td>
        <td height="35"><input type="text" name="Vorname" size="20"></td>
        <td height="35"><font size="1" color="#FF0000"><div ID = "err_vname"></div><div ID = "err_vname1"></div><div ID = "err_vname2"></div></font></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Name*</b></td>
        <td height="35"><input type="text" name="Name" size="20"></td>
        <td height="35"><font size="1" color="#FF0000"><div ID = "err_name"></div><div ID = "err_name1"></div><div ID = "err_name2"></div></font></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Strasse*</b></td>
        <td height="35"><input type="text" name="Strasse" size="20"></td>
        <td height="35"><font size="1" color="#FF0000"><div ID = "err_strasse"></div><div ID = "err_strasse1"></div></font></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Hausnummer*</b></td>
        <td height="35"><input type="text" name="Hausnummer" size="20" maxlength="4"><td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>PLZ*</b></td>
        <td height="35"><input type="text" name="PLZ" size="20" maxlength="6"></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Wohnort*</b></td>
        <td height="35"><input type="text" name="Wohnort" size="20"></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Land*</b></td>
        <td height="35"><select name="Land" size="1">
        <option value="" selected></option>
        <option value="Deutschland">Deutschland</option>
...
        </select></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Emailadresse*</b></td>
        <td height="35"><input type="text" name="Email" size="20"></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>Geburtsdatum*</b></td>
        <td height="35"><select name="Tag" size="1">
            <option selected value="Tag">Tag</option>
            <option value="01">01</option>
...
          </select><select name="Monat" size="1">
          <option selected value="Monat">Monat</option>
          <option value="01">01</option>
 ...
          </select><select name="Jahr" size="1">
          <option selected value="Jahr">Jahr</option>
          <option value="1990">1990</option>
          ...
          </select></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"><b>eigene Webseite?</b></td>
        <td height="35"><input type="text" name="Webseite" size="20" value="www.deine-seite.de"></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td height="35" width="120"></td>
        <td height="35"></td>
        <td height="35"></td>
              </tr>
              <tr>
        <td width="120"></td>
        <td><input type="submit" value="Abschicken" title="submit"><input type="reset" value="Löschen" title="löschen"></td>
        <td></td>
              </tr>
            </center>
          </table>
        </div>
        <center>
        </form>
```

Viele Grüße
Virtuallunas


----------



## Thomas Lindner (5. April 2004)

.....da "inner.HTML" nur vom Internet Explorer verstanden wird, würde ich anraten statdessen , die Divs ein und ausblenden zu lassen, damit z.B. Mozilla User auch etwas davon haben.


----------



## virtuallunas (5. April 2004)

Danke für den Hinweis das ...innerHTML nur vom IE verstanden wird. Aber nun bin ich wieder am Anfang und weiß jetzt gar nicht mehr, wie ich das Formular bearbeiten/verarbeiten soll.
Kann mir jemand mit einem Script weiterhelfen, daß nicht nur vom IE verstanden wird?

Viele Grüße und Danke!

Virtuallunas


----------



## Thomas Lindner (5. April 2004)

Wenn Du ein paar Tage Geduld hast und/oder hier jemand anderer sich noch dafür bereit erklärt ja.

Ich könnte frühestens gegen Ende der Woche.


----------



## virtuallunas (5. April 2004)

Hallo!
Zeit habe ich! Sitze schließlich schon 4 Wochen an der Seite! :-( 
Habe die ganze Zeit gesucht, aber halt nicht die perfekte Lösung gefunden und mich nun hoffend hier ins Forum getraut! 
Wäre super, wenn mir jemand weiterhelfen könnte!  

Viele Grüße
Virtuallunas


----------



## Sven Mintel (5. April 2004)

Hallo...

"innerHTML" verstehen auch Mozilla und Opera7


----------



## Thomas Lindner (5. April 2004)

> _Original geschrieben von fatalus _
> *Hallo...
> 
> "innerHTML" verstehen auch Mozilla und Opera7  *



Sicher? Ein Test bei mir lokal im Mozilla Firebird funktionierte *nicht*.

( Brauche das derzeit für eine lokale Seite im Intranet )

Ich hatte hier nämlich lokal was getestet und bin dann eher auf Zufall ( Suche == Recherche ) auf diesen Thread gestossen!


----------



## virtuallunas (5. April 2004)

Ich kann es nicht sagen, da ich nur den IE habe.
Es wäre aber echt super, wenn mir hier jemand weiterhelfen kann und mein Problem lösen kann. Ich habe Euch meine Codes zur Verfügung gestellt, mehr kann ich als Newbie nicht tun...
Falls mir hier keiner helfen kann, weiß ich auch nicht mehr weiter

Bitte
Virtuallunas


----------



## split (5. April 2004)

Doch, bei mir hat innerHTML im Opera, Mozilla und Netscape auch funktioniert. Ich schau mir deinen Code mal etwas genauer an...

Keine Ahnung, wie lange das dauert, hab einfach bisschen Geduld


----------



## Sven Mintel (6. April 2004)

Ich hab da mal rumprobiert.... angesichts der Vielzahl der Prüfkriterien und Fehlermeldungen bin ich der Ansicht, dass sich da Arrays gut machen würden.
Es mag auf den ersten Blick verwirrend aussehen, ist es aber nicht
Es werden in den Arrays reguläre Ausdrücke und die dazu passenden Fehlermeldungen gespeichert...dadurch schwillt das Skript nicht bei jedem Prüfkriterium um ein paar Zeilen an.

Der Einfachheit halber haben die Arrays als Namen die Namen der entsprechenden Formularfelder.
Bei den Brausern, welche innerHTML verstehen, wirds in der Seite ausgegeben, bei den anderen als alert....
da für jede einzelne Fehlermeldung einen Layerhineinzupacken halt ich für wenig erstrebenswert... das wären beim derzeitigen Stand 40-50 Stück.

```
<html>
<head>
<title>test</title>
<script type="text/javascript">
<!--

fields=new Array();
errors=new Array()
fields['user']=new Array(/\S/,/.{5,}/,/^\w+$/i);
errors['user']=new Array('gewünschten Benutzernamen eingeben!','mindestens 5 Zeichen!','keine Sonderzeichen!');
fields['vorname']=new Array(/\S/,/.{3,}/,/^\D+$/);
errors['vorname']=new Array('Nachnamen eingeben!','kompletten Vornamen!','keine Zahlen!');
fields['name']=new Array(/\S/,/.{5,}/,/^\D+$/);
errors['name']=new Array('Vornamen eingeben!','kompletten Nachnamen!','keine Zahlen!');
fields['strasse']=new Array(/\S/,/.{5,}/,/^[\w\-\.]+$/);
errors['strasse']=new Array('Ihre Strasse eingeben!','kompletten Straßennamen!','keine Zahlen!');
fields['hausnummer']=new Array(/\S/,/^[a-z0-9]+$/i);
errors['hausnummer']=new Array('Ihre Hausnummer eingeben!','Ihre Hausnummer eingeben!');
fields['plz']=new Array(/\S/,/^\d+$/i);
errors['plz']=new Array('Ihre PLZ eingeben!','Ihre PLZ eingeben!');
fields['wohnort']=new Array(/\S/,/.{3,}/);
errors['wohnort']=new Array('Ihren Wohnort eingeben!','kompletten Wohnort!');
fields['land']=new Array('0');
errors['land']=new Array('ein Land auswählen!');
fields['email']=new Array(/\S/,/^[a-zA-Z0-9_\.-]{2,}@[a-z0-9-]{3,}\.([a-z]{2,4}|museum)$/i);
errors['email']=new Array('Ihre E-Mail-Adresse eingeben!','Ihre gültige E-Mail-Adresse eingeben!');
fields['tag']=new Array('0');
errors['tag']=new Array('Ihren Geburtstag wählen!<br>');
fields['monat']=new Array('0');
errors['monat']=new Array('Ihren Geburtsmonat wählen!<br>');
fields['jahr']=new Array(/\S/,/^(19|20)\d\d$/i);
errors['jahr']=new Array('Ihre Geburtsjahr eingeben!','Ihre Geburtsjahr eingeben!');


IE=document.all&&!window.opera;
DOM=!IE&&document.getElementsByTagName&&document.getElementsByTagName('title')[0].innerHTML;
XXX=(!DOM&&!IE);


function chkanmeldung(frm)
{
isError=false;
for(var f in fields)
    {
    for(i=0;i<fields[f].length;++i)
        {
        eMsg='';
        if(i==0&&fields[f][i]=='0'){if(frm.elements[f].selectedIndex==0){eMsg='Bitte '+errors[f][i];}}
        else if(!String(frm.elements[f].value).match(fields[f][i])){eMsg='Bitte '+errors[f][i];}
        if(XXX&&eMsg!=''){alert(eMsg.replace(/<br>/,''));frm.elements[f].focus();return false;}
        else if(!XXX)
            {
            if(DOM){document.getElementById('err_'+f).innerHTML=eMsg;}
            else if(IE){eval('document.all.err_'+f+'.innerHTML="'+eMsg+'";');}
            if(eMsg!=''){isError=(!isError)?frm.elements[f]:isError;break;}
            }
        }
    }
if(isError){isError.focus();return false;}
return true;
}
//-->
</script>
<style type="text/css">
<!--
.err{font-size:10px;color:#ff0000;}
input,select{font:11px Arial,Tahoma,Geneva,Sans-Serif;}
-->
</style>
</head>
<body>
<form name="anmeldung" method="POST" action="mailer.php" onSubmit="return chkanmeldung(this)">
 <div align="center">
  <table border="0" cellpadding="0" cellspacing="0" >
   <tr>
    <td height="35" width="120"><b>Benutzername*</b></td>
    <td height="35"><input type="text" name="user" size="20" maxlength="15"></td>
    <td height="35"><span id="err_user"class="err"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Vorname*</b></td>
    <td height="35"><input type="text" name="vorname" size="20"></td>
    <td height="35"><span id="err_vorname"class="err"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Name*</b></td>
    <td height="35"><input type="text" name="name" size="20"></td>
    <td height="35"><span id="err_name"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Strasse*</b></td>
    <td height="35"><input type="text" name="strasse" size="20"></td>
    <td height="35"><span id="err_strasse"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Hausnummer*</b></td>
    <td height="35"><input type="text" name="hausnummer" size="20" maxlength="4">
    <td height="35"><span id="err_hausnummer"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>PLZ*</b></td>
    <td height="35"><input type="text" name="plz" size="20" maxlength="6"></td>
    <td height="35"><span id="err_plz"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Wohnort*</b></td>
    <td height="35"><input type="text" name="wohnort" size="20"></td>
    <td height="35"><span id="err_wohnort"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Land*</b></td>
    <td height="35">
     <select name="land">
      <option selected>Bitte ausw&auml;hlen</option>
      <option value="Deutschland">Deutschland</option>
     </select>
    </td>
    <td height="35"><span id="err_land"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Emailadresse*</b></td>
    <td height="35"><input type="text" name="email" size="20"></td>
    <td height="35"><span id="err_email"class="err"></span></td>
   </tr>
   <tr>
    <td height="35" width="120"><b>Geburtsdatum*</b></td>
     <td height="35">
      <select name="tag">
       <option selected>Tag</option>
       <option>01</option>
      </select>
      <select name="monat">
       <option selected>Monat</option>
       <option>01</option>
      </select>
      <input name="jahr"size="4"maxlength="4"value="Jahr">
     </td>
     <td height="35"><span id="err_tag"class="err"></span><span id="err_monat"class="err"></span><span id="err_jahr"class="err"></span></td>
    </tr>
    <tr>
     <td height="35" width="120"><b>eigene Webseite?</b></td>
     <td height="35"><input type="text" name="Webseite" size="20" value="www.deine-seite.de"></td>
     <td height="35"></td>
    </tr>
    <tr>
     <td colspan="3"align="center">
      <input type="submit" value="Abschicken" title="submit">
      <input type="reset" value="Löschen" title="löschen">
     </td>
    </tr>
   </table>
  </div>
 </form>
</body>
</html>
```
Der Aufbau der Arrays ist wie schon erwähnt:

*  fields[feldname]=new Array(Regexp1,Regexp1,Regexp1,usw);* 
*  errors[feldname]=new Array(Fehler1,Fehler2,Fehler3,usw);* 

wie viele Prüfkriterien angegeben werden, spielt keine Rolle.
ein Sonderfall sind die <select>'s, da wird statt einer RegExp lediglich:

*  fields[selectName]=new Array('0');* 
..geschrieben(die Fehlermeldung dazu wie gehabt)

Die Fehlermeldung erscheint dabei in <span>'s statt <div>'s,.... <div>'s erzeugen einen neuen Absatz, auch wenn sie leer sind...
ich glaub, das war dein Problem, als die Zellen anschwellten, obwohl nix drinnen stand.

Die <span>'s heissen haben als ID immer den Namen des entsprechenden Formularfeldes...mit vorangestelltem "err_"


----------



## Thomas Lindner (6. April 2004)

> _Original geschrieben von split _
> *Doch, bei mir hat innerHTML im Opera, Mozilla und Netscape auch funktioniert. Ich schau mir deinen Code mal etwas genauer an...
> 
> Keine Ahnung, wie lange das dauert, hab einfach bisschen Geduld  *



Dann sei mein ******* FireBird verflucht bis zurück in die Steinzeit, weil mir funktioniert es nicht!


----------



## Sven Mintel (6. April 2004)

Mein Firebird macht das auch....vielleicht hast du nur ne schlechte Mischung erwischt....da kommen ja täglich Dutzende Builds raus
meiner ist [1.4b: 2003051616]


----------



## Thomas Lindner (6. April 2004)

> _Original geschrieben von fatalus _
> *Mein Firebird macht das auch....vielleicht hast du nur ne schlechte Mischung erwischt....da kommen ja täglich Dutzende Builds raus
> meiner ist [1.4b: 2003051616] *




Ich werde mir mal eine neue Version besorgen, bisher hatte ich keinen Anlass, weill alles funktionierte!


----------



## virtuallunas (6. April 2004)

*Hallo Leute,*

ich danke Euch ganz herzlich für Eure Bemühungen. 
Ich hätte nicht gedacht, daß meine Fragen solch eine Resonanz bewirken! 
@fatalus: Ich werde Deinen Code heute nachmittag ausprobieren, da ich leider erst dann wieder an meine Unterlagen komme.
Falls es noch irgendwelche Probleme geben sollte, werde ich mich wieder melden!   
Ansonsten danke ich Euch jetzt schon ganz doll für Eure Unterstützung.

Viele Grüße
Virtuallunas

P.S. Falls noch jemand eine Idee hat, kann er sie ruhig mitteilen


----------



## virtuallunas (6. April 2004)

*DANKE*

Es funktioniert im IE so wie ich es mir gewünscht hatte!
So hätte ich das alleine nie hingekriegt!
     
Viele Grüße
Virtuallunas


----------



## theflyingmanson (12. November 2008)

Ist zwar schon ein älterer thread aber ich hab mir das mal angeschaut und habe da mal eine frage! Wie könnte man den da noch eine passwortabfrage einbauen
also das wenn man zweipasswort felder hat um die dann miteinander zu vergleichen und dann noch ein extra ausgabefeld auszugeben.


----------

