Silverdragon Geschrieben 22. September 2008 Geschrieben 22. September 2008 Hallo ich habe folgendes Problem: Ich habe ein HTML Formular erstellt welches verschiedene Werte an meine Datenbank übergibt, das klappt auch alles wunderbar . Anschließend habe ich mit Javascript eine Abfrage erstellt um zu prüfen ob die Felder leer sind if (document.Eingabe.Strasse.value == '') { alert('Bei der Eingabe der Strasse ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Strasse.focus(); return false; } Das klappt auch soweit Nun muss ich ein Datum aus einem Formularfeld auslesen und würde gerne mit Javascript prüfen ob das richtige Format eingetragen ist ( YYYY-MM-DD). Ich hatte anfangs eine Variante in der man in 3 Formaularfelder direkt die eingaben machen kann und habe dann geprüft ob es zahlen sind var chkZ = 1; for (i = 0; i < document.Eingabe.Jahr.value.length; ++i) if (document.Eingabe.Jahr.value.charAt(i) < "0" || document.Eingabe.Jahr.value.charAt(i) > "9") chkZ = -1; if (chkZ == -1) { alert("Datumsangabe ist keine Zahl, Bitte korrigieren Sie ihre Eingabe!"); document.Eingabe.Jahr.focus(); return false; } ich habe das gleich auch mit "Monat" und "Tag" gemacht, anschließend habe ich die 3 Formularfelder zusammen gebastelt und in das an die Datenbank übergeben. Nun endlich zu meiner Frage Wie bekomme ich es hin das ich den User dazu zwingen kann das Datum in einem gewissen Format also in meinem Fall ( YYYY-MM-DD) in nur einem Textfeld einzutragen und das ansonsten eine Fehlermeldung kommt mit der Aufforderung das richtige Format einzugeben am liebsten wäre mir eine Lösung mit Java-Script da meine anderen Abfragen zum Fehler abfangen auch auf Javascript beruhen. Vielen Dank im vorraus MfG S!lv3r Zitieren
bytebrain Geschrieben 22. September 2008 Geschrieben 22. September 2008 Hier heißt das Zauberwort RegEx var regex = /\d\d\d\d-\d\d-\d\d/; regex.exec(datumswert); [/PHP] HTH, bytebrain [b]Edit:[/b] Mehr Info hier Zitieren
Silverdragon Geschrieben 23. September 2008 Autor Geschrieben 23. September 2008 Danke für die schnelle Antwort Leider bekomme ich das Regex nicht so richtig eingebunden wie es sein soll bzw will das Script mir beim "Submit" einfach keine Alertbox ausgeben welche sagt das das Datum Falsch ist und man es richtig eingeben muss. Das Script läuft dann einfach weiter was bei chkformular nicht der Fall ist. Gibt es evtl auch eine Möglichkeit das über ChkFormular zu lösen hätte es am liebsten so gelöst.Wäre Klasse wenn ihr da ne Idee habt. Zitieren
Shadowman Geschrieben 23. September 2008 Geschrieben 23. September 2008 ist ChkFormular eine funktion, die du dir geschrieben hast um das formular zu überprüfen? wenn ja könntest du auch einfach mit nem if prüfen ob stelle 4 (strings fangen mit dem index 0 an) und 7 ein "-" sind und falls nein die msg ausgeben und den focus setzen Zitieren
Silverdragon Geschrieben 23. September 2008 Autor Geschrieben 23. September 2008 (bearbeitet) Genau da liegt ja mein Problem ich bin nen absoluter Noob in Javascript :upps Ich kriege es einfach ned gebacken Zeichen für Zeichen in dem Textfeld zu prüfen, wären es nur Zahlen wäre es ja kein Problem für mich das hatte ich ja schonmal bei der Lösung mit den 3 Eingabefeldern fürs Datum gemacht da könnte ich den oben aufgeführten Code nehmen aber diese doofen Bindestriche treiben mich noch in den Wahnsinn. Hier nochmal mein ganzes Formular: <?php echo" <html> <head> "; //Prüfung ob die Eingabefelder ausgefüllt sind bzw das die Textfelder nicht leer sind echo" <script type='text/javascript'> function chkFormular () { if (document.Eingabe.Anrede.value == '') { alert('Bei der Eingabe der Anrede ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Anrede.focus(); return false; } if (document.Eingabe.Vorname.value == '') { alert('Bei der Eingabe des Vornamens ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Vorname.focus(); return false; } if (document.Eingabe.Nachname.value == '') { alert('Bei der Eingabe des Nachnamens ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Nachname.focus(); return false; } if (document.Eingabe.Email.value == '') { alert('Bitte Ihre E-Mail-Adresse eingeben!'); document.Eingabe.Email.focus(); return false; } if (document.Eingabe.Email.value.indexOf('@') == -1) { alert('Keine gültige E-Mail-Adresse!'); document.Eingabe.Email.focus(); return false; } if (document.Eingabe.Strasse.value == '') { alert('Bei der Eingabe der Strasse ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Strasse.focus(); return false; } if (document.Eingabe.Stadt.value == '') { alert('Bei der Eingabe der Stadt ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Stadt.focus(); return false; } if (document.Eingabe.Postleitzahl.value == '') { alert('Bei der Eingabe der Postleitzahl ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Postleitzahl.focus(); return false; } if (document.Eingabe.Matrikelnummer.value == '') { alert('Bei der Eingabe der Matrikelnummer ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Matrikelnummer.focus(); return false; } if (document.Eingabe.Telefonnummer.value == '') { alert('Bei der Eingabe der Telefonnummer ist Ihnen ein Fehler unterlaufen, Bitte wiederholen Sie ihre Eingabe'); document.Eingabe.Telefonnummer.focus(); return false; } } </script>"; //Formular zur Eingabe der Datensätze echo " <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> <title>Hiwi hinzufügen</title> <link href='style.css' rel='stylesheet' type='text/css'> </head> <body> <div id='navcontainer'> <ul id='navlist'> <li>><a href='http://1.2.3/ausgabe.php'>Übersicht</a></li> <li><a href='http://1.2.3/eingabe_form.php'>Datensatz anlegen</a></li> </ul> </div> <table> <form name='Eingabe' form action='eingabe.php' method='POST' onsubmit='return chkFormular()'> <tr> <td>Anrede:</td> <td><input type='checkbox' name='Anrede' value='Herr'>Herr <input type='checkbox' name='Anrede' value='Frau'>Frau</td><br></tr> <tr><td>Vorname:</td> <td><input name='Vorname' type='text' value='' ></td><br></tr> <tr><td>Nachname:</td> <td><input name='Nachname' type='text' value=''></td><br></tr> <tr><td>Geburtsdatum:</td> <td><input name='Datum' type='text' value=''></td></tr> <tr><td>Straße:</td> <td><input name='Strasse' type='text' value=''></td><br></tr> <tr><td>Stadt:</td> <td><input name='Stadt' type='text' value=''></td><br></tr> <tr><td>Postleitzahl:</td> <td><input name='Postleitzahl' type='text' value=''></td><br></tr> <tr><td>E-Mail:</td> <td><input name='Email' type='text' value=''></td><br></tr> <tr><td>Matrikelnummer:</td> <td><input name='Matrikelnummer' type='text' value=''></td><br></tr> <tr><td>Telefonnummer:</td> <td><input name='Telefonnummer' type='text' value=''></td><br></tr> <tr><td>Vertragsbeginn:</td> <td><input name='Datum2' type='text' value=''></td></tr> <tr><td>Vertragsende:</td> <td><input name='Datum3' type='text' value=''></td></tr> <tr><td>Fachgebiet:</td> <td><input name='Fachgebiet' type='text' value=''></td><br></tr> <tr><td>Arbeitgeber(zuständiger Professor):</td> <td><input name='Prof' type='text' value=''></td><br></tr> <tr><td>Stundenanzahl/Monat:</td> <td><input name='Stundenanzahl' type='text' value=''></td><br></tr> <tr><td>Stundenlohn:</td> <td><input name='Stundenlohn' type='text' value=''></td><br></tr> <tr><td>Monatslohn:</td> <td><input name='Monatslohn' type='text' value=''></td><br></tr> <tr><td>Kostenstelle:</td> <td><input name='Kostenstelle' type='text' value=''></td><br></tr> <tr><td>HBS-Unterstelle:</td> <td><input name='Unterstelle' type='text' value=''></td><br></tr> <tr><td>Steuernummer:</td> <td><input name='Steuernummer' type='text' value=''></td><br></tr> <tr><td>Tätigkeit:</td> <td><input name='Arbeitsbereich' type='text' value=''></td><br></tr> <tr><td>Notizen:</td> <td><input name='Notizen' type='text' value=''></td><br></tr> <tr> <td><input name='submit' type='submit' value='Datensatz eintragen'></td><br></tr> </form> </body></table> </html>"; ?>[/PHP] Bearbeitet 23. September 2008 von Silverdragon Zitieren
Shadowman Geschrieben 23. September 2008 Geschrieben 23. September 2008 if (!(document.Eingabe.Datum.value.substr(4,1) == '-' && document.Eingabe.Datum.value.substr(7,1) == '-')) { alert('Bitte beachten Sie beim Datum das Format YYYY-MM-DD'); document.Eingabe.Geburtsdatum.focus(); return false; } du solltest aber vorher noch die länge von 'Datum' prüfen. Das kannst du auf alle datumsfelder übertragne Zitieren
Silverdragon Geschrieben 23. September 2008 Autor Geschrieben 23. September 2008 Hat alles wunderbar geklappt!! :marine:marine:marine Vielen lieben dank nochmal du hast mir den Tag gerettet Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.