Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Datum aus einem Formular übergeben

Empfohlene Antworten

Veröffentlicht

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

Hier heißt das Zauberwort RegEx :D


var regex = /\d\d\d\d-\d\d-\d\d/;
regex.exec(datumswert);
[/PHP]

HTH,

bytebrain

[b]Edit:[/b]

Mehr Info hier

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.

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

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

  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

Hat alles wunderbar geklappt!!

:marine:marine:marine

Vielen lieben dank nochmal du hast mir den Tag gerettet :D

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.