Andreas: Zeichen von der Eingabe ausschließen

Weiß jemand, wie ich verhindern kann, dass ein Formularfeld mit einem falschen Zeichen ausgefüllt/übermittelt wird?

Das Feld muss immer mit einem Punkt als Dezimaltrennzeichen ausgefüllt/übermittelt (wegen MySQL) werden, kein Komma.

Gruß,
Andreas

  1. Moin!

    Weiß jemand, wie ich verhindern kann, dass ein Formularfeld mit einem falschen Zeichen ausgefüllt/übermittelt wird?

    Gar nicht. Die Formularelemente kennen keine Einschränkungen.
    Selbstverständlich kannst Du aber die Eingaben prüfen. Allerdings musst Du das, wenn Du dies mit JS vornimmst zweimal machen: JS kann abgeschaltet sein, also nochmals serverseitig prüfen!

    Das Feld muss immer mit einem Punkt als Dezimaltrennzeichen ausgefüllt/übermittelt (wegen MySQL) werden, kein Komma.

    anz einfache "Prüfung":

    Tausche kurzerhand jedes "," gegen einen "." und teste danach ob die mit 1.0 multiplizierte Variable gleich der eingebenen Variable (nach dem Tausch) ist. Wenn ja-> ok, wenn nein-> zurückweisen.

    in js:

    <script type="text/javascript">

    funktion komma2point(str) {
       str=str.replace(/,/, ".");
       /* replace ist eine Methode, die auf strings angewndet werden kann
          Sie erwartet als Parameter einen Regex für das was und den String
          gegen welchen ausgetauscht werden soll.
       */
       return str;
    }

    funktion testAufZahl(str) {
       /* Diese Funktion gibt wahr oder falsch zurück, wenn der übergebene Wert eine Zahl ist.
       if (zahl==zahl*1.0) {
          return TRUE;
       } else {
          return FALSE;
       }
    }

    /* Jetzt musst Du diese Funktionen nur noch auf Dein Formular anwenden. */

    function checkZahl(form,element) {
      zahl = document.forms[form].elements[element].value;
      zahl = komma2point(zahl);
      if (testAufZahl(zahl)) {
         document.forms[0].submit()
      } else {
         alert("Geben Sie eine Zahl ein!");
      }
    }
    </script>

    Ach ja: Natürlich muss die Prüfung ausgelöst werden:
    Also entweder:

    <form name="F1"....>
    <input type="text" name="E1" onchange="checkZahl('F1','E1');">
    </form>

    oder:

    <form name="F1" onsubmit="onchange="checkZahl('F1','E1')" ... >
    <input type="text" name="E1">
    <input type="submit">
    </form>

    Ich erinnere daran, daß die gleiche Prüfung serverseitig stattfinden muss!

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Moin!

      <form name="F1" onsubmit="onchange="checkZahl('F1','E1')" ... >

      ->
      <form name="F1" onsubmit="checkZahl('F1','E1')" ... >

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.