Announcement

Collapse
No announcement yet.

Textfeld so formatieren das man nur ein Datum eintragen kann

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Textfeld so formatieren das man nur ein Datum eintragen kann

    Hallo allerseits. Ich habe folgendes Problem:
    Ich habe ein Textfeld (input type="text" name="xxx" size="xxx"). Ich möchte aber das man nur ein Datum in Form von <b>TT.MM.JJJJ</b> eintragen kann. Andernfalls soll eine Fehlermedung erscheinen. Wisst Ihr da zufällig was???
    Würde mich über Antwort sehr freuen<br>
    <b>Gruß Chris</b>

  • #2
    Es gibt eine eigentlich ganz gute Lösung dafür.
    Ist dieses Input Teil eines Formulars? Wenn ja, dann kannst du vor dem Absenden prüfen, ob die Angabe hinhaut:
    <pre>
    &lt;script language="JavaScript1.2"&gt;&lt;--
    &nbsp;&nbsp;function isDate(s) {
    &nbsp;&nbsp;&nbsp;&nbsp;return /^\d{1,}(\.|\-)\d{1,}(\.|\-)\d{2,}$/.test(s)
    &nbsp;&nbsp;}<br>
    &nbsp;&nbsp;function chkform() {
    &nbsp;&nbsp;&nbsp;&nbsp;if(!isDate(document.myform .myinput.value)) {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;al ert("He, das ist doch kein Datum.");
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do cument.myform.myinput.focus();
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b >return false;</b>
    &nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;}
    //--&gt;&lt;/script&gt;
    </pre>
    Das "return false;" ist in dem Moment wichtig, damit das Formular <u>nicht</u> abgeschickt wird. Im HTML-Text des Formulars ergänzt du dann nur:
    <pre>
    &lt;form name=.... onSubmit="return chkform()"&gt;
    </pre>
    Die Funktion "isDate" akzeptiert ein- und zweistellige Tages- und Monatswerte. Das Jahr kann zwei- oder vierstellig angegeben werden. Und als Trennung gehen sowohl Punkte als auch Bindestriche. Also:
    <pre>
    11.09.2001
    11-09-2001
    11-09-01
    </pre>
    usw. Wenn du genau dieses "Wischi-Waschi" verhindern willst, dann änderst du die Zeile in "isDate" wie folgt:
    <pre>
    &nbsp;&nbsp;&nbsp;&nbsp;return /^\d{2}(\.|\-)\d{2}(\.|\-)\d{4}$/.test(s)
    </pre>
    Jetzt entspricht so ziemlich deinem Wunsch. )<br><br>
    Ich muss dazu sagen, die Grundidee stammt dabei aus einer Datei mit diversen Prüfroutinen, die ich bei
    http://www.rabich.de
    gefunden habe. Allerdings existiert in dieser Datei besagte Datumsfunktion nicht. Und überdies ist die Funktion mit der Telefon-Nr. leicht fehlerhaft, weil sie auch nur eine einzige Ziffer als Telefon-Nr. akzeptiert. Wen´s interessiert, sollte stattdessen diesen Patch benutzen:
    <pre>
    //
    // nur Telefon-Nr. sind erlaubt (Syntax: 123/1234, 123-1234, 123 1234)
    //
    function isPhone(s) {
    &nbsp;&nbsp;return /^\d{3,}(\-|\s|\/)\d{3,}$/.test(s)
    &nbsp;&nbsp; // Originalzeile --> return /^(\d|\-|\/)+\d$/.test(s)
    }
    </pre>

    Gruß,<br>
    Mathias.

    &#10

    Comment


    • #3
      Hallo Christian,<br><br>
      anbei ein Datei zum Testen (
      http://www.reihe5.de/markus/formtest.htm
      )<br><br>
      @Markus Lemke: Sorry, aber ich nehme das Verzeichnis zum Veröffentlichen von meinen Beispielen. ) Wenn ich den Namen ändere, passen die anderen Links hier im Forum nicht mehr.<br><br>
      Gruß,<br>
      Mathias

      Comment

      Working...
      X