gary: (if) Einzelnes Symbol zulassen

Hallihallo,

Ich habe eine Abfrage entdeckt, die ehemals eine Altersabfrage war. Jetzt möchte ich sie so umbauen, das daraus eine Geburtsdatumabfrage
wird. Die untere Abfrage lässt explizit nur zahlen von 1-9 zu, was soweit ok ist. Nun möchte ich der Abfrage sagen, das auch Punkte (.)
zulässig sein sollen.

if (document.Formular.Geburtsdatum.value == "") {
    alert("Bitte Ihr Geburtsdatum eingeben!");
    document.Formular.Geburtsdatum.focus();
    return false;
  }
  var chkZ = 1;
  for (i = 0; i < document.Formular.Geburtsdatum.value.length; ++i)
    if (document.Formular.Geburtsdatum.value.charAt(i) < "0" ||
        document.Formular.Geburtsdatum.value.charAt(i) > "9")
      chkZ = -1;
  if (chkZ == -1) {
    alert("Geburtsdatum erlaubt nur Zahlen und Punkte!");
    document.Formular.Geburtsdatum.focus();
    return false;
  }

Im Basic würd ich es so machen:

Eingabe:
input a
if a=>1 then goto Allesok
if a=<9 then goto Allesok
if a="."then goto Allesok
Goto Fehlerroutine

oder so ähnlich. Jemand eine Idee

'"ein kleiner Schritt für den Programmierer, ein grosser Schritt für die Menscheit"' (Erste Mond Mission)

  1. Hallihallo,

    Ich habe eine Abfrage entdeckt, die ehemals eine Altersabfrage war. Jetzt möchte ich sie so umbauen, das daraus eine Geburtsdatumabfrage
    wird. Die untere Abfrage lässt explizit nur zahlen von 1-9 zu, was soweit ok ist. Nun möchte ich der Abfrage sagen, das auch Punkte (.)
    zulässig sein sollen.

    ...

    Im Basic würd ich es so machen:

    In Zeiten Regulärer Ausdrücke, würde man sowas in etwa so machen:
    function checkNumber(val) { return !/[^\.\d]/.test( val );}

    Aber ich würde das gar nicht so machen, sondern den Eingabestring an den Punkten splitten, dann hast du ein Array mit den entpsrechenden Werten, die du dann einzelnen viel einfacher auf ihre Gültigkeit überprüfen kannst.

    Struppi.

    1. Aber ich würde das gar nicht so machen, sondern den Eingabestring an den Punkten splitten, dann hast du ein Array mit den entpsrechenden Werten, die du dann einzelnen viel einfacher auf ihre Gültigkeit überprüfen kannst.

      Du meinst also ein Feld "Tag"(2 Stellen), "Monat"(2 Stellen) und "Jahr" (4 Stellen). Würde gehen. Ist halt extra arbeit.

      Übrigens, die Formel

      function checkNumber(val) { return !/[^.\d]/.test( val );}

      ist wahnsinnig kompliziert. Wo ist die her ? Gibts da eine Dokumentation dazu ?

      gruss gary

      1. Aber ich würde das gar nicht so machen, sondern den Eingabestring an den Punkten splitten, dann hast du ein Array mit den entpsrechenden Werten, die du dann einzelnen viel einfacher auf ihre Gültigkeit überprüfen kannst.

        Du meinst also ein Feld "Tag"(2 Stellen), "Monat"(2 Stellen) und "Jahr" (4 Stellen). Würde gehen. Ist halt extra arbeit.

        Nein, meine ich nicht. ein Feld Datum, dann diesen Wert splitten und testen. Dann kannst du das ganze zu einem Datum zusammenbauen. z.b. so http://javascript.jstruebig.de/javascript/39/

        Übrigens, die Formel

        function checkNumber(val) { return !/[^.\d]/.test( val );}

        ist wahnsinnig kompliziert. Wo ist die her ? Gibts da eine Dokumentation dazu ?

        Das ist ein Regulärer Ausdruck.

        Struppi.

        1. Alles klar.

          Danke für die hilfe. Somit kann ichmich dem nächsten Herausforderung stellen.

          Gruss gary