Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 :D

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

Geschrieben

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.

Geschrieben

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

Geschrieben (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 von Silverdragon
Geschrieben

  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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...