hawkmaster: Prüfung auf korrekte Eingabe von Beträgen (Nachkommastellen)

Hallo zusammen,

in einem Textfeld wird als Default Wert der Betrag:

0.0000
geladen.
Die Beträge werden in einer MySQL tabelle mit decimal(7,4) gespeichert.
Man kann also maximal Werte bis;
999.9999
eingeben.

Ich würde gerne eine Eingabeprüfung machen, damit immer 4 Nachkommastellen eingegeben werden.
Wie könnte man dies erreichen? Müsste man den Betrag aufsplitten und nach dem Pubnkt trennen? Aber was wenn ein Anwender aus Versehen ein Komma eingibt anstatt einen Punkt?

vielen Dank und viele Grüße
hawk

  1. Hi,

    ich würde dafür Reguläre Ausdrücke verwenden.

    ~dave

  2. Hi there,

    Ich würde gerne eine Eingabeprüfung machen, damit immer 4 Nachkommastellen eingegeben werden.
    Wie könnte man dies erreichen? Müsste man den Betrag aufsplitten und nach dem Pubnkt trennen?

    Du musst die Zahl wie einen String behandeln und entsprechend analysieren.

    Aber was wenn ein Anwender aus Versehen ein Komma eingibt anstatt einen Punkt?

    Am besten, Du suchst zuerst einen Punkt, wenn Du den nicht findest ein Komma und teilst dann den String am entsprechenden Zeichen. Die rechte Hälfte formatierst Du dann nach Deiner Vorstellung und setzt danach die beiden Teile mit dem Dir konvenierenden Zeichen wieder zusammen...

  3. Hallo hawkmaster,

    ich würde mit http://de.selfhtml.org/javascript/objekte/string.htm#index_of@title=indexOf und http://de.selfhtml.org/javascript/objekte/string.htm#length@title=length prüfen, ob genug Nachkommastellen da sind, evtl. auch noch Leerzeichen berücksichtigen bzw. entfernen. Ein evtl. vorhandenes Komma würde ich mit http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace durch einen Punkt ersetzen. Und irgendwann würde ich mit http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#is_nan@title=isNaN auch noch prüfen, ob überhaupt eine Zahl eingegeben wurde.

    Gruß, Jürgen

  4. Mahlzeit hawkmaster,

    Ich würde gerne eine Eingabeprüfung machen, damit immer 4 Nachkommastellen eingegeben werden.

    Diese solltest Du *NICHT* mit Javascript, sondern Server-seitig realisieren. Zumindest vordringlich.

    Eine interaktive Eingabeerleichterung und Benutzerführung mittels Javascript ist allerhöchstens die Kür, die Du gerne in Phase 2 umsetzen kannst.

    Wie könnte man dies erreichen? Müsste man den Betrag aufsplitten und nach dem Pubnkt trennen?

    Könnte man. Man könnte auch versuchen, die Eingabe <http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_float@title=in einen gültigen numerischen Wert umzuwandeln> und dann damit weiterzuarbeiten ...

    Aber was wenn ein Anwender aus Versehen ein Komma eingibt anstatt einen Punkt?

    Dann wurde dem Anwender wohl nicht mitgeteilt, in welchem Format er seine Werte eingeben sollte. Nur Du selbst kannst entscheiden, was dann passieren soll: entweder die Eingabe wird als "falsch" interpretiert und der Benutzer muss sie in Deinem Sinne korrigieren oder Du versuchst, das Beste aus dem Wert zu machen - z.B. indem Du verschiedene Zahlenformate berücksichtigst und entsprechend konvertierst, so dass am Schluss wieder ein gültiger numerischer Wert dabei herauskommt. Mit diesem könntest Du dann wie oben weiterarbeiten.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  5. Ich würde gerne eine Eingabeprüfung machen, damit immer 4 Nachkommastellen eingegeben werden.
    Wie könnte man dies erreichen? Müsste man den Betrag aufsplitten und nach dem Pubnkt trennen? Aber was wenn ein Anwender aus Versehen ein Komma eingibt anstatt einen Punkt?

    Wenn du das zulassen willst, dann musst du das komma gegen einen Punkt tauschen. Und wenn du nur 4 Nachkommastellen haben willst, dann multipliziere die Zahl mit und teile durch 10 ^4.

    Struppi.

  6. Hallo zusammen,

    vielen Dank an alle für die Ideen und Vorschläge.
    Also eigentlich passiert nicht viel bei einer falschen Eingabe.
    Denn die DB bzw. der Datentyp lässt maximal 999.9999 zu
    bzw. es wird automatisch korriegiert wenn man z.b,. nur
    5.5 eingibt. Dann wird daraus 5.5000 gemacht.

    Vielleicht reicht ja dann auch einfach einen Hinweis für den User, welche Max Werte erlaubt sind und wieviel Nachkommastellen erlaubt sind.

    vielen Dank und viele Grüße
    hawk