• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kontaktformular Problem

webber979

Neues Mitglied
Ich mache gerade ein Kontaktformular bei dem zum Schluss alles überprüft werden soll.
Bei einem Fehler soll eine Fehler Meldung kommen.
Das Formular heißt Buchung.
Jedoch kommt keine Fehler meldung wenn ich z.B im Formular nichts ausfülle.
Kann mir jemand weiterhelfen.
Ich wär euch echt sehr dankbar.
HTML:
function kontroll(Buchung)
{
    var Fehler="";
    for (var i=0;i<Buchung.elements.length-8;i++)
    {
    if(Buchung.elements[i].value.length<2)
     
        {Fehler+="Bitte das Feld"+Buchung.elements[i].name+" ausfüllen./n"; }
        
        if ( Buchung.elements[i].name=="Telefonnummer")
        
        { 
        if (isNaN(Buchung.elements[i].value)
        || Buchung.elements[i].value.length==10)
        {Fehler+="Bitte geben Sie eine gültige"
        +" Telefonnummer an. /n";}
        }
        if ( Buchung.elements[i].name=="E-Mail-Adresse")
        { if (!email(Buchung.elements[i].value))
        {    Fehler+="Bitte geben Sie eine gültige"+ "E-Mail-Adresse an./n";}
        }
    }
if (Fehler=="") return true;
 else { alert(Fehler);
  return false; }
  }
 





function email(adresse)
{
    if (!(adresse.length-adresse-lastIndexOf(".")==4
        || adresse.length-adresse.lastIndexOf(".")==3))
        {
            var Start=adresse.lastIndexOf(".")+1;
            var Ende= adresse.length;
            var toplevel=adresse.substring(start,Ende);
                toplevel=(toplevel).toLowerCase();
                if (toplevel!="info" && toplevel!="name"
                && toplevel!="museum" && toplevel!="aero"
                && toplevel!="coop")
                return false;
                
        }
        
        if (adresse.indexOf("@")<1
        || adresse.indexOf("@")+1>=adresse.lastIndexOf("."))
        return false;
                return true;
}
und in Html
HTML:
  <form action="mailto:[email protected]" method="post" name="Buchung" onSubmit="return kontroll(this);">
//und so weiter
Danke:D
webber979
 
Wie sieht der HTML-Code des Formulars aus?
Wieso schickst Du es direkt an deine Mail-Adresse und verwendest JavaScript?
 
Und bitte immer in die Fehlerkonsole schauen.
Hab zum Beispiel hier gesgat bekommen, dass was nicht in ordnung ist:
adresse.length-adresse-lastIndexOf(".")

da hast du wohl ein - anstatt ein . reingebracht =)

Wobei ich nicht so ganz von dem Code überzeugt bin. Vor allem willst du dir den String unverarbeitet als Email schicken lassen und ganz ohne serverseitige Prüfung?
Da kannst du die Leuten auch direkt ne Email schreiben lassen :)
Ich hoffe du überdenkst das nochmal. Wenn du Rat und Hilfe für eine "richtige" Umsetzung brauchst, so wirst du du all das hier im Forum finden :)
 
HTML:
<div id="buchungsformular">
    <form action="mailto:[email protected]" method="post" name="Buchung" onSubmit="return kontroll(this);">
    Name: <br />
    <input type="text" value="" name="Name" maxlength="20" size="45" /><br />
    E-Mail:<br />
    <input type="text" value="" name="E-Mail-Adresse" maxlength="20" size="45" /><br />
    Telefonnummer:<br />
    <input type="text" value="" name="Telefonnummer" maxlength="12" size="45" /><br />
     Bevorzugtes Datum: <br />
    <input type="text" value="" name="Bevorzugtes-Datum" maxlength="20" size="45" /><br />
    Musiker:<br />
    <select name="Musiker" size:"10"><br />
    <option value="Band">Band
    <option value="Gesang">Gesang(z.B:Chor)
    <option value="Instrumental">Instrumental
    <option value="Karaoke">Karaoke
    <option value="Produzent">Produzent
    <option value="Komponist">Komponist
    <option value="Sonstiges">Sonstiges
    
    </select>
    <br />
    Genre:<br />
    <select name="Genre" size:"10"><br />
    <option value="Rock">Rock
    <option value="Pop">Pop
    <option value="Punk">Punk
    <option value="Hip-Hop">Hip-Hop
    <option value="Rap">Rap
    <option value="Reggae">Reggae
    <option value="Electro">Electro
    <option value="Dance">Dance
    <option value="Jazz">Jazz
    <option value="Klassic">Klassik
    <option value="Gospel">Gospel
    <option value="Sonstiges">Sonstiges
    </select>
    <br />
    Kommentar:<br />
    <textarea name="Kommentar" cols="45" rows="5" onKeyPress="setzLaenge();">
    </textarea>
    <br />
    
    <div id="BuchungText">

    <table border="1" bgcolor="#FFF">
<tr>
        <td></td>
        <td>WE+Mix</td>
        <td>Einzelstunde</td>
        <td>Einzelner Tag</td>
        <td>Woche: 5 Tage</td>
      </tr>
      <tr>
        <td height="47" ><b>Lukas kleines Tonstudio</b></td>
        <td><input type="radio" name="Buchung-Studio" value="Lukas-Kleines-StudioWE+Mix" /></td>
        <td><input type="radio" name="Buchung-Studio"  value="Lukas-Kleines-StudioEinzelstunde" checked="JA" /></td>
        <td><input type="radio" name="Buchung-Studio" value="Lukas-Kleines-StudioEinzelnertag" /</td>
        <td>-</td>
        <tr>
        <td  ><b>Preise:</b></td>
        <td>160,-</td>
        <td>15,-</td>
        <td>80,-</td>
        <td>-</td>
      </tr>
      </tr>
    </table>    
    <br />
    <br />
    
    <table border="1" bgcolor="#FFF">
        <tr>
        <td></td>
        <td>WE+Mix</td>
        <td>Einzelstunde</td>
        <td>Einzelner Tag</td>
        <td>Woche: 5 Tage</td>
      </tr>
       <tr>
        <td height="47" ><b>Lukas gro&szlig;es Tonstudio</b></td>
        <td><input type="radio" name="Buchung-Studio" value="Lukas-Kleines-StudioWE+Mix" /></td>
        <td><input type="radio" name="Buchung-Studio" value="Lukas-Kleines-StudioEinzelstunde" /></td>
        <td><input type="radio" name="Buchung-Studio" value="Lukas-Kleines-StudioEinzelnertag" /</td>
        <td><input type="radio" name="Buchung-Studio" value="Lukas-Kleines-StudioWoche" /</td>
        </tr>
      <tr>
        <td><b>Preise:</b></td>
        <td>280,-</td>
        <td>23,80,-</td>
        <td>140,-</td>
        <td>600,-</td>
      </tr>
      </table>
      
      <br />
      <br />
      
       <table border="1" bgcolor="#FFF">
        <tr>
        <td></td>
        <td>WE+Mix</td>
        <td>Einzelstunde</td>
        <td>Einzelner Tag</td>
        <td>Woche: 5 Tage</td>
        </tr>
      <tr>
        <td height="47" ><b>Jonas gro&szlig;es Tonstudio</b></td>
        <td><input type="radio" name="Buchung-Studio" value="Jonas-Großes-StudioWE+Mix" /></td>
        <td><input type="radio" name="Buchung-Studio" value="Jonas-Kleines-StudioEinzelstunde" /></td>
        <td><input type="radio" name="Buchung-Studio" value="Jonas-Kleines-StudioEinzelnertag" /</td>
        <td><input type="radio" name="Buchung-Studio" value="Jonas-Kleines-StudioWoche" /</td>
        </tr>
        
        <td><b>Preise:</b></td>
        <td>478,-</td>
        <td>29,75,-</td>
        <td>235,-</td>
        <td>900,-</td>
      </tr>
      </table>
        </div>
        <br>
        <input type="checkbox" name="Lieder Mischen" value="Ja">  Liede/r Mischen lassen(35,- pro Titel). Kann vor Ort geändert/besprochen  werden.
           <br>
        <input type="checkbox" name="Nur Mischen" value="Ja"  onClick="alert('Wenn sie nur ihre Lieder mischen lassen wollen, wird das  Studio NICHT gebucht. Sie erhalten bald eine E-Mail von uns in der  weitere Informationen stehen, um den Mix perfekt für sie zu  machen.:-)'); "> Liede/r NUR Mischen lassen(35,- pro Titel). Lieder  können per Internet gesendet werden.
        <br>
        <input type ="Submit" name="Absenden"  value="Absenden">&nbsp;&nbsp;&nbsp; <input type  ="Reset" name="Löschen" value="Löschen">
    
    </form>
    </div>
Wobei ich nicht so ganz von dem Code überzeugt bin. Vor allem willst du dir den String unverarbeitet als Email schicken lassen und ganz ohne serverseitige Prüfung?
mehr kann ich nicht dazu sagen.

Was ist das problem von Javascript und E-Mail-Adressen???
 
Hallo,

also schön das langsam mit den ganzen code kommst.
Meine vorschreiben meinen das die Weiterverarbeitung sehr ungünstig ist (höfflich gesagt :O) ).
Javascript Prüfung und dann das Ganze per E-Mail verschicken, viel mehr kann man kaum falsch machen denn:
- Javascript Prüfung lassen sich einfach umgehen
- per E-Mail verschicken, das geht nur wenn der Besucher sein E-Mail Programm eingerichtet hat, was aber immer weniger wird. also können dir nicht alle schreiben.

Das HTML Formular sieht doch schon mal ganz ok aus.
Musst die Prüfungen bloss mit PHP machen und auch mit PHP verschicken, alles andere macht kaum Sinn.

Cheffchen
 
Danke aber wie sonst?

Danke vielmals für die Antwort.:D
Kann mir jemand ein günstiges phpformular ungefähr schicken.
Ich wäre echt dankbar, weil ich nur javascript kann.
Wenn ich für eine Community das Formular auswerten würde um die Daten in Arrays zu speichern ist doch Javascript eine bessere Lösung oder?
webber979:D
 
Ich gebe Cheffchen recht das ist was für PHP und nicht für JS, aber es geht auch mit JS ich kann aber Bloß den Code mit Beschreibung und Anleitung geben ich habe keine Zeit den Code auf dein Formular umzuschreiben muss lernen für die Schule!!!

Text:

5.8.1Vollständigkeitsüberprüfung
Als Grundlage verwenden wir ein einfaches Formular, wie Sie es bereits ähnlich aus dem Kapitel 4 »HTML und CSS« kennen. Eine JavaScript-Funktion zur Überprüfung ist bereits definiert und wird im Ereignis onsubmit aufgerufen. Der Einfachheit halber verschicken wir das Formular per E-Mail und nicht per serverseitiges Skript.
Listing 5.35: Ein Beispielformular (formular.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Formular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript"><!--
function vollst() {
}
//--></script>
</head>
<body>
<form action="mailto:[email protected]" method="post" enctype="text/plain" onsubmit="return vollst()"
name="umfrage">
<p>Wie zufrieden sind Sie mit dem Service?</p>
<input type="radio" name="Zufriedenheit"
value="nicht" /> nicht
<input type="radio" name="Zufriedenheit"
value="relativ" /> relativ
<input type="radio" name="Zufriedenheit"
value="sehr" /> sehr zufrieden<br /><br />
<textarea name="Beschreibung" rows="10" cols="40"></textarea><br /><br />
<select name="kauf" size="2">
<option value="gel">Geltungsbed&uuml;rfnis
</option>
<option value="kau">Kaufsucht</option>
<option value="bef">Befriedigung</option>
</select> Warum kaufen Sie?<br /><br />
<input type="text" name="PLZ" size="15" maxlength="20"> Geben Sie Ihre
Postleitzahl ein.<br /><br />
<input type="reset" name="Reset"
value="R&uuml;cksetzen" />
<input type="submit" name="Senden"
value="Abschicken" />
</form>
</body>
</html>
Beim Senden dieses Formulars soll nun in der JavaScript-Funktion vollst() überprüft werden, ob alle Formularelemente ausgefüllt wurden. Dies erfolgt über mehrere Fallunterscheidungen. Für jedes Formularelement muss eine eigene Fallunterscheidung eingeführt werden. Ist die Bedingung nicht erfüllt, wird von dem Formular der Wahrheitswert false zurückgeliefert. Dies führt dazu, dass das Formular nicht abgeschickt wird. Im Folgenden sehen Sie einen Ausschnitt aus dem Quellcode mit dem Aufruf der JavaScript-Funktion. Im nächsten Schritt müssen die Fallunterscheidungen für die einzelnen Formularelemente vorgenommen werden.
Formularelemente
JavaScript
Zugriff auf Formularelemente
Zuerst müssen Sie checken, ob einer der Radiobuttons ausgewählt wurde. Der Zugriff auf die Formularelemente erfolgt über das document-Objekt. In der Punktnotation müs
Statt des Namens des Formulars können Sie dieses auch mit dem Array forms und dem zugehörigen Index in eckigen Klammern angeben. Das erste Formular einer Seite hat den Index 0, das zweite 1 etc. Die Formularelemente können statt ihres Namens mit dem Array elements und ihrem Index angesprochen werden.
In unserem Beispiel wird die Gruppe von Radiobuttons mit document.umfrage. Zufriedenheit angesprochen. Da Radiobuttons immer eine Gruppe bilden, wird aus Zufriedenheit ein Array. Einzelne Radiobuttons werden mit den Indizes angesprochen.
Mit dem Befehl checked testen Sie, ob ein Radiobutton angeklickt ist. Die Checks für die drei Radiobuttons werden mit einem logischen ODER verknüpft. Sobald einer der Radiobuttons angeklickt ist, ergibt die Verknüpfung mit ODER den Wert true. Wenn das nicht der Fall ist, wird false zurückgegeben.
Listing 5.36: Einen Radiobutton prüfen
if (!(document.umfrage.Zufriedenheit[0].checked || document.umfrage.Zufriedenheit[1].checked || document.umfrage.Zufriedenheit[2].checked)) {
return false;
}
Info ........
Da Checkboxen voneinander unabhängig sind, ist es nicht sinnvoll, zu prüfen, ob sie angekreuzt sind oder nicht, denn das sind ja die zwei Optionen für den Nutzer. Wollen Sie prüfen, ob aus einer Gruppe von Checkboxen mindestens eine angekreuzt ist, können Sie das allerdings auf dieselbe Weise wie bei den Radiobuttons erledigen. Statt des Arrays mit Index müssen Sie nur die Namen der Checkboxen einfügen.
Das Textfeld Beschreibung soll daraufhin untersucht werden, ob es einen Inhalt hat, also keinen leeren String enthält. Da die Daten des Textfelds im value-Attribut mitgeliefert werden, muss dieses in der if-Anweisung geprüft werden. Ist es leer, so ist die Bedingung erfüllt und es wird false zurückgeliefert. Das Formular wird also nicht verschickt.
Listing 5.37: Ein Textfeld prüfen
if (document.umfrage.Beschreibung.value=="") {
return false;
}
Bei der Auswahlliste kauf ist die Überprüfung ebenfalls recht einfach. Wenn keines der Elemente ausgewählt wurde, hat das Array selectedIndex den Wert –1. selectedIndexenthält den oder die Indexnummern der gewählten Optionen.
Listing 5.38: Eine Auswahlliste prüfen
if (document.umfrage.kauf.selectedIndex==-1) {
return false;
}
Als Letztes wollen wir in unserem Beispiel überprüfen, ob das Textfeld für die Postleitzahl richtig ausgefüllt wurde. Dazu reicht es nicht, zu prüfen, ob das Feld überhaupt ausgefüllt wurde. Stattdessen wollen wir wissen, ob es die vorgeschriebenen fünf Stellen enthält. Dazu müssen wir die Zahl der Stellen zählen. Dies erledigt der Befehl length.
if ((document.umfrage.PLZ.value.length!=5)) {
return false;
}
Tipp .......
Sie haben am letzten Beispiel gesehen, dass man Angaben recht detailliert überprüfen kann. Allerdings werden Plausibilitätstests von Nutzerangaben schnell sehr komplex, auch wenn Sie beispielsweise reguläre Ausdrücke einsetzen. Und Sie können sicher sein, dass findige »Trickser« immer noch Wege entdecken werden, völligen Nonsens in Ihre Formulare zu schreiben – »blabla«, »xy« und »Donald Duck« sind immer möglich. Finden Sie also immer den richtigen Grad zwischen Aufwand und Nutzen. Aus unserer Erfahrung erscheint es beispielsweise sinnvoll, zu prüfen, wie lang eine Postleitzahl ist, da es sich hier auch oft um unabsichtliche Fehlerangaben handeln kann. Dagegen ist es sinnlos, Sonderzeichen in Namen herausfiltern zu wollen. Gibt ein Nutzer Sonderzeichen in ein solches Feld ein, so wird er das Formular sicher nie richtig ausfüllen.
Komplette Vollständigkeitsüberprüfung
In diesem Abschnitt fügen wir die einzelnen Elemente unseres Beispiels zusammen und zeigen Ihnen das Formular als Ganzes. Nach den if-Anweisungen fügen wir noch eine else-Anweisung ein. Wenn keine der if-Anweisungen zutrifft, das Formular also vollständig ist, wird mit der else-Anweisung true zurückgegeben. Dies ist nicht unbedingt notwendig, aber sauberer.
Listing 5.39: Vollständigkeitsüberprüfung für ein Formular (formular_vollst.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Formular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript"><!--
function vollst() {
if (!(document.umfrage.Zufriedenheit[0].checked || document.umfrage.Zufriedenheit[1].checked || document.umfrage.Zufriedenheit[2].checked)) {
return false;
}
if (document.umfrage.Beschreibung.value=="") {
return false;
}
if (document.umfrage.kauf.selectedIndex==-1) {
return false;
}
JavaScript
296
Um dieses Problem zu lösen, sammeln wir die Angaben der unvollständig ausgefüllten Felder in einer Zeichenketten-Variablen. Am Schluss prüfen wir, ob die String-Variable überhaupt Zeichen enthält. Wenn nicht, so ist auch kein Fehler aufgetreten. Ansonsten werden die fehlerhaften Felder mit alert() ausgegeben.
Listing 5.40: Vollständigkeitsüberprüfung mit Fehlermeldung (formular_meld.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Formular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript"><!--
function vollst() {
var fehler = "";
if (!(document.umfrage.Zufriedenheit[0].checked || document.umfrage.Zufriedenheit[1].checked || document.umfrage.Zufriedenheit[2].checked)) {
fehler += "Zufriedenheit\n";
}
if (document.umfrage.Beschreibung.value=='') {
fehler += "Beschreibung\n ";
}
if (document.umfrage.kauf.selectedIndex==-1) {
fehler += "Kaufmotivation\n";
}
if (document.umfrage.PLZ.value.length!=5) {
fehler += "Postleitzahl";
}
if (fehler=='') {
return true;
}
else {
alert('Folgende Felder wurden nicht vollständig ausgefüllt:\n'+fehler);
return false;
}
}
//--></script>
</head>
<body>
<form action="mailto:[email protected]" method="post"
enctype="text/plain" onsubmit="return vollst()"
name="umfrage">
<p>Wie zufrieden sind Sie mit dem Service?</p>
<input type="radio" name="Zufriedenheit"
value="nicht" /> nicht
<input type="radio" name="Zufriedenheit"
value="relativ" /> relativ
<input type="radio" name="Zufriedenheit"
value="sehr" /> sehr zufrieden<br /><br />
<textarea name="Beschreibung" rows="10" cols="40"
wrap="virtual"></textarea><br /><br />
<select name="kauf" size="2">
<option value="gel">Geltungsbed&uuml;rfnis
</option>
<option value="kau">Kaufsucht</option>
<option value="bef">Befriedigung</option>
</select> Warum kaufen Sie?<br /><br />
<input type="text" name="PLZ" size="15" maxlength="20"> Geben Sie Ihre
Postleitzahl ein.<br /><br />
<input type="reset" name="Reset"
value="R&uuml;cksetzen" />
<input type="submit" name="Senden"
value="Abschicken" />
</form>
</body>
</html>
Bei der Vollständigkeitsüberprüfung sind selbstverständlich noch viele Varianten denkbar: Geben Sie doch beispielsweise die Fehlermeldungen direkt neben den leeren Feldern aus. Dazu benötigen Sie nur einen leeren <div>-Container und den DHTML-Zugriff (siehe Abschnitt 5.12.1). Sie können die Vollständigkeitsüberprüfung für jedes Feld auch schon beim Verlassen des Felds durchführen lassen (siehe nächster Abschnitt zu den Ereignissen für Formularelemente)
 
Zurück
Oben