webapache: Nur EIN Punkt im Textfeld erlaubt

Hallo zusammen,

ich habe in einem Textfeld eine Preisangabe. Da ich diese Preise mit PHP prozentual anheben und senken muss und nicht immer wieder jedes Komma abfangen will, habe ich mir erlaubt das Textfeld auf die Eingabe von Zahlen und einem Punkt als Trennzeichen zu beschränken. Soweit funktioniert auch alles perfekt. Nun aber der Teil an dem ich nicht weiter komme. Wie kann ich es erreichen, das in einem Textfeld nur EIN EINZIGER Punkt gesetzt werden darf? Also z.B.: "75.00" und nicht "75..00"

Am besten ist es wenn das schon beim Tastendruck abgefangen wird.

Und gleich noch was: Wie erreiche ich eine "Zeichenersetzung". Da die meißten Menschen ja ihre Zahlen im NUM Block mit dem Komma eintippen, möchte ich dieses Komma zwischen den Tasten Null und Enter beim Tastendruck sofort in einen Punkt umwandeln. Geht das?

Danke schon mal im Voraus
Gruß,
Olli

  1. Also als erstes gibts die Javascript-Funktion: onkeydown

    Damit kannste dann überprüfen welche Taste gedrückt wurde und wenn es ein KOMMA ist, kannste gleich den Inhalt von deinem Textfeld (am besten mit this übergeben) ein replace(/,/g,'.') ranfügen ... dann wird jedes KOMMA ersetzt (jedes wegen g, wenn nur das erste vorkommen ersetzt werden soll, dann das g weglassen)

    Du kannst ermitteln welche Taste gedrückt wurde *grübel* weiß nur nich mehr mit welcher Funktion.

    Ansonsten würd ich dir raten dich mit regexp mehr zu beschäftigen :) Da liegt definitiv die Lösung.

  2. Hallo,

    Wie kann ich es erreichen, das in einem Textfeld nur EIN EINZIGER Punkt gesetzt werden darf? Also z.B.: "75.00" und nicht "75..00"

    Am besten ist es wenn das schon beim Tastendruck abgefangen wird.

    Auf Tastendrücke kann man mit onkeydown reagieren. Du musst die eingegebenen Punkte mittels des Eventhandlers also mitzählen und dann entsprechend reagieren (s.u.).

    Und gleich noch was: Wie erreiche ich eine "Zeichenersetzung". Da die meißten Menschen ja ihre Zahlen im NUM Block mit dem Komma eintippen, möchte ich dieses Komma zwischen den Tasten Null und Enter beim Tastendruck sofort in einen Punkt umwandeln. Geht das?

    Sofort umwandeln? Du verlangst viel ;-) Dazu muss die gedrückte Taste ermittelt und der Text im Eingabefeld entsprechend dynamisch geändert werden. Herauszufinden, welche Taste genau gedrückt wurde, ist wegen Browserunterschieden nur etwas umständlich zu ermitteltn, am besten so:

    DeinInputBoxElement.onkeypress = function (e)
    {
      e = e||event; var tastencode = (e.which||e.keyCode);

    // tastencode enthält jetzt den Dezimalcode der gedrückten Taste, z.B. 44 für ein Komma, also:

    if (tastencode = 44) {

    // Ersetze das letzte Zeichen im Input-Feld durch einen Punkt.
      }
    };

    Gruß, Don P

    1. Sorry, der Vergleich muss natürlich lauten:

      if (tastencode == 44) {...

      Gruß, Don P

  3. Moin.

    Ich hatte mir vor einer Weile mal etwas gebastelt.  Ein Überprüfung auf Preisangaben ginge beispielsweise so.

    Christoph

  4. Hallo,

    mach sowas serverseitig. Auf JavaScript ist ein Verlass. Du musst ohnehin damit rechnen, dass dein Script unter Umständen fehlerhafte Daten bekommen. Also musst du genau diese Logik nochmal in PHP schreiben. Da kannst du auch gleich alle Fehlertoleranz serverseitig implementieren.

    Mathias