Validierung mehrerer Eingaben

  • geschlossen
  • JavaScript

  • ilTino
  • 2046 Aufrufe 5 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Validierung mehrerer Eingaben

    Hallo zusammen,

    ich bin noch sehr frisch auf dem Feld der Programmierung und mache meine ersten Schritte. Als Startprojekt will ich einen kleinen Online-Shop machen. Dieser soll über eine Registrierung verfügen. Die Eingaben in die jeweiligen Textfelder sollen dabei validiert werden. Mit meinem jetzigen Code lässt sich ein einzelnes Textfeld prüfen. Wenn ich allerdings auf die selbe Art und Weise ein weiteres Textfeld prüfen will, wird plötzlich gar nichts mehr geprüft.

    Wie schaffe ich es, dass ich mehrere Textfelder validieren kann?

    HTML-Quellcode

    1. <html>
    2. <head>
    3. <script language="javascript" type="text/javascript"><!--
    4. function checkFormular() {
    5. // checkt die PLZ
    6. var vPLZ = document.formular.plz.value;
    7. var postleitzahl = /^([0]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{3}$/;
    8. var rPLZ = postleitzahl.test(vPLZ);
    9. if(rPLZ == true) {
    10. alert("Die eingegebene PLZ ist korrekt");
    11. return true;
    12. } else {
    13. alert ("Die eingegebene PLZ ist fehlerhaft");
    14. return false;
    15. }
    16. // checkt die eMail
    17. String vMail = document.formular.mail.value;
    18. String mail = /[a-zA-Z0-9_-\.]+@[a-zA-Z0-9\.]+[a-zA-Z]{2,4}/;
    19. String rMail = mail.test(vMail);
    20. if (rMail == true) {
    21. alert ("Die eingegebene eMail-Adresse ist korrekt");
    22. return true;
    23. } else {
    24. alert ("Die eingegebene eMail-Adresse ist fehlerhaft");
    25. return false;
    26. }
    27. }
    28. </script>
    29. </head>
    30. <body>
    31. <form name="formular" onSubmit="return checkFormular()">
    32. <input name="plz" type="text" size="5" maxlength="5"> <br/>
    33. <input name="mail" type="text" size="20" maxlength="20"> <br/>
    34. <input type="submit"> <input type="reset">
    35. </form>
    36. </body>
    Alles anzeigen
  • Hi,
    Funktionen können ein Statement zur Rückgabe enthalten. Dies ist "return". Return gibt ein Wert zurück und bricht die laufende Funktion ab (Wie soll man auch mehrere Werte zurückgeben). Da bei dir in jedem Fall nach der PLZ-Validierung etwas zurückgegeben wird, kommt der mail-Teil nicht mehr dran ;)

    Mehr: JavaScript Functions

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Array für Java Script Validierung

    Hallo,

    erstmal vielen Dank für die Antwort. Das hat mir schon mal sehr geholfen.

    Ich habe das Konzept auf Grundlage der Antwort und des Links logisch angepasst. Leider ohne positives Ergebnis bisher. Ich will in die Methode nun mehrere Werte mitnehmen. Das mach ich über den Methodenkopf. Ist das überhaupt sinnvoll, oder sollte ich bei dem Statement "var vPLZ = document.formular.plz.value;" bleiben?

    Das Programm validiert momentan gar nicht. Woran liegt das? Wie kann ich die Werte richtig übergeben? Wie kann ich sie in der Methode "anfassen"?

    Hier der aktuelle Code:

    HTML-Quellcode

    1. <html>
    2. <head>
    3. <script language="javascript" type="text/javascript">
    4. function checkFormular(plz, mail) {
    5. // checkt die PLZ
    6. var vPLZ = plz; // document.formular.plz.value;
    7. var postleitzahl = /^([0]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{3}$/;
    8. var rPLZ = postleitzahl.test(vPLZ);
    9. if(rPLZ == false) {
    10. alert("Die eingegebene PLZ ist fehlerhaft");
    11. return false;
    12. }
    13. // checkt die eMail
    14. String vMail = mail; // document.formular.mail.value;
    15. String mail = /[a-zA-Z0-9_-\.]+@[a-zA-Z0-9\.]+[a-zA-Z]{2,4}/;
    16. String rMail = mail.test(vMail);
    17. if (rMail == false) {
    18. alert ("Die eingegebene eMail-Adresse ist fehlerhaft");
    19. return false;
    20. }
    21. return true;
    22. }
    23. </script>
    24. </head>
    25. <body>
    26. <form name="formular" onSubmit="return checkFormular()">
    27. <input name="plz" type="text" size="5" maxlength="5"> <br/>
    28. <input name="mail" type="text" size="20" maxlength="20"> <br/>
    29. <input type="submit"> <input type="reset">
    30. </form>
    31. </body>
    Alles anzeigen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Broken Sword () aus folgendem Grund: Code-Tag hinzugefügt =&gt; Regeln lesen!

  • Hi,
    wenn du die Variablen übergeben willst, dann musst du das auch machen ;)

    Quellcode

    1. checkFormular(document.formular.plz.value,document.formular.mail.value);
    Aber wenn du nur ein Formular hast, ist das unnötig.
    Außerdem sind ein paar Fehler in deinem Code. Probiere mal:

    Quellcode

    1. function checkFormular() {
    2. // checkt die PLZ
    3. var vPLZ = document.formular.plz.value;
    4. var postleitzahl = /^([0]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{3}$/;
    5. var rPLZ = postleitzahl.test(vPLZ);
    6. if(rPLZ == false) {
    7. alert("Die eingegebene PLZ ist fehlerhaft");
    8. return false;
    9. }
    10. // checkt die eMail
    11. var vMail = document.formular.mail.value;
    12. var mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    13. var rMail = mail.test(vMail);
    14. if (rMail == false) {
    15. alert ("Die eingegebene eMail-Adresse ist fehlerhaft");
    16. return false;
    17. }
    18. return true;
    19. }
    Alles anzeigen


    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Sind meine RegEx zur Datenvalidierung korrekt?

    Langsam fängt es an, Spass zu machen. :)

    Erstmal herzlichen Dank. Dein Code läuft problemlos. Jetzt weiß ich schon mal, dass es so laufen kann.

    In meinem jugendlichen Leichtsinn, habe ich nun natürlich auch andere Textfelder hinzugefügt, die validiert werden sollen. Außerdem unterscheide ich z. B. auch in eine deutsche (5-stellig) und in eine österreichische/schweizer (4-stellig) Postleitzahl.

    Resultat ist, dass ich nun alle Felder prüfen kann. Außer die Postleitzahl. Die verträgt meine if-Abfrage leider nicht.

    1. Wo liegt mein Fehler?
    2. Beim Geburtsdatum würde ich auch gerne noch prüfen, ob dieses in der Zukunft liegt (eingegebenes Datum > date() funktioniert leider nicht) und ob es "unlogisch" in der Vergangenheit liegt. Beispielsweise im 14. Jahrhundert. Wie kann ich das einfach und effizient umsetzen?
    3. Mein aktuelles regEx für das Passwort ist noch etwas "unschön". Ich habe zwar drei oder vier gefunden, bei denen die Ersteller von einem sicheren Passwort sprechen, allerdings immer ohne Erklärung. Und verstanden habe ich sie alle nicht :) Falls jemand hierzu also noch etwas nettes hat...

    Hier der aktuelle Code:

    HTML-Quellcode

    1. <html>
    2. <head>
    3. <script language="javascript" type="text/javascript">
    4. function checkFormular() {
    5. // checkt den Namen
    6. var vName = document.formular.name.value;
    7. var name = /[a-zA-ZäöüÄÖÜ]+/;
    8. var rName = name.test(vName);
    9. if (rName == false) {
    10. alert ("Die eingegebene Nachname ist fehlerhaft");
    11. return false;
    12. }
    13. // checkt den Vornamen
    14. var vVorname = document.formular.vorname.value;
    15. var vorname = /[a-zA-ZäöüÄÖÜ]+/;
    16. var rVorname = vorname.test(vVorname);
    17. if (rVorname == false) {
    18. alert ("Die eingegebene Vorname ist fehlerhaft");
    19. return false;
    20. }
    21. // checkt die eMail-Adresse
    22. var vMail = document.formular.mail.value;
    23. var mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    24. var rMail = mail.test(vMail);
    25. if (rMail == false) {
    26. alert ("Die eingegebene eMail-Adresse ist fehlerhaft");
    27. return false;
    28. }
    29. // checkt das Geburtsdatum
    30. var vDatum = document.formular.gdatum.value;
    31. // aktuellesDatum = date();
    32. var datum = /[0-9]{4}-[0-9]{2}-[0-9]{2}/;
    33. var rDatum = datum.test(vDatum);
    34. if (rDatum == false) {
    35. alert ("Das eingegebene Geburtsdatum ist fehlerhaft");
    36. return false;
    37. }
    38. // checkt den Nickname
    39. var vNickname = document.formular.nickname.value;
    40. var nickname = /[a-zA-ZäöüÄÖÜ]+/;
    41. var rNickname = nickname.test(vNickname);
    42. if (rNickname == false) {
    43. alert ("Der eingegebene Nickname entspricht nicht den erlaubten Konventionen");
    44. return false;
    45. }
    46. // checkt das Passwort
    47. var vPasswort = document.formular.passwort.value;
    48. var passwort = /[a-zA-Z]{4,10}/;
    49. var rPasswort = passwort.test(vPasswort);
    50. if (rPasswort == false) {
    51. alert ("Das eingegebene Passwort entspricht nicht den erlaubten Konventionen. Das Passwort muss zwischen vier und zehn alphabetische Zeichen haben.");
    52. return false;
    53. }
    54. // checkt die Straße
    55. var vStrasse = document.formular.strasse.value;
    56. var strasse = /[a-zA-ZäöüÄÖÜ \.]+/;
    57. var rStrasse = strasse.test(vStrasse);
    58. if (rStrasse == false) {
    59. alert ("Die eingegebene Straße ist fehlerhaft");
    60. return false;
    61. }
    62. // checkt die Hausnummer
    63. var vHausnummer = document.formular.hausnummer.value;
    64. var hausnummer = /[0-9]+[a-zA-Z]?/;
    65. var rHausnummer = hausnummer.test(vHausnummer);
    66. if (rHausnummer == false) {
    67. alert ("Die eingegebene Hausnummer entspricht nicht den zulässigen Konventionen");
    68. return false;
    69. }
    70. // checkt die PLZ
    71. var postleitzahl = document.formular.plz.value;
    72. var vLand = document.formular.land.value;
    73. if (vLand == 1) { // Der Wert "1" steht für Deutschland
    74. postleitzahl = /^([0]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{3}$/;
    75. var rPLZ = postleitzahl.test(vPLZ);
    76. if(rPLZ == false) {
    77. alert("Die eingegebene PLZ ist fehlerhaft");
    78. return false;
    79. } else {
    80. postleitzahl = /^\d{4}$/;
    81. var rPLZ = postleitzahl.test(vPLZ);
    82. if(rPLZ == false) {
    83. alert("Die eingegebene PLZ ist fehlerhaft");
    84. return false;
    85. }
    86. }
    87. }
    88. // wenn keiner der Checks "false" ist, dann gib "true" zurück
    89. return true;
    90. }
    91. </script>
    92. <title>Registrierung</title>
    93. </head>
    94. <body>
    95. <form name="formular" onSubmit="return checkFormular()">
    96. Name*: <input type="text" name="name" maxlength=50 /><br/>
    97. Vorname*: <input type="text" name="vorname" maxlength=50 /><br/>
    98. Email*: <input type="text" name="mail" maxlength=50 /><br/>
    99. Geburtsdatum*: <input type="text" name="gdatum" size=10 maxlength=10 /> ( JJJJ-MM-TT ) <br/>
    100. Nickname*: <input type="text" name="nickname" maxlength=50 /><br/>
    101. Passwort*: <input type="password" name="passwort" maxlength=50 /><br/>
    102. Straße*: <input type="text" name="strasse" maxlength=50 />
    103. Hausnummer*: <input type="text" name="hausnummer" size=3 maxlength=10 /><br/>
    104. PLZ*: <input type="text" name="plz" size=5 maxlength=5 /><br/>
    105. Land*: <select name="land">
    106. <option value="1" selected>Deutschland</option>
    107. <option value="2">Österreich</option>
    108. <option value="3">Schweiz</option>
    109. </select>
    110. <p>
    111. <input type="submit">
    112. </p>
    113. </form>
    114. <p>
    115. * Pflichtfelder
    116. </p>
    117. </body>
    118. </html>
    Alles anzeigen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von ilTino () aus folgendem Grund: Flüchtigkeitsfehler im HTML :-)

  • du hast das else bei der PLZ-Überprüfung an die falsche Stelle gepackt.

    müsste so aussehen:

    Quellcode

    1. if (vLand == 1) { // Der Wert "1" steht für Deutschland
    2. postleitzahl = /^([0]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{3}$/;
    3. var rPLZ = postleitzahl.test(vPLZ);
    4. if(rPLZ == false) {
    5. alert("Die eingegebene PLZ ist fehlerhaft");
    6. return false;
    7. }
    8. }else {
    9. postleitzahl = /^\d{4}$/;
    10. var rPLZ = postleitzahl.test(vPLZ);
    11. if(rPLZ == false) {
    12. alert("Die eingegebene PLZ ist fehlerhaft");
    13. return false;
    14. }
    15. }
    Alles anzeigen


    fürs Geburtsdatum würden sich UNIX timestamps anbieten. Die kann man direkt miteinander vergleichen.
    "General, der Mensch ist sehr brauchbar. Er kann fliegen und er kann töten.
    Aber er hat einen Fehler: Er kann denken." - Brecht
    I Don't smoke, I don't drink, I don't fuck! At least I can fucking think!