Input Limit zu zahlen und . auf input Feld
Folgenden auf die aus einer anderen Frage habe ich gefragt, was ich wirklich nicht zu sein scheinen immer und überall. Aufgrund meiner Unfähigkeit. Ich entschied mich für die Jungs beantworten , weil er meine Frage beantwortet.
Ich versammle ich nicht die richtige Frage denn ich habe keine Ahnung, was zu tun ist ..
So Problem ist, ich habe input-element . Halten Sie es einfach;
<input type="text" maxlength="12" name="price" id="price" class="foo">
Ich möchten, dass Benutzer in der Lage, geben Sie nur zahlen und nur eine Periode ( . ) auf eine beliebige Stelle im Preis. so könnte 3.00 oder 300.00 oder 3000
Könnte jemand bitte helfen Sie mir, ich werde goggle-eyed.
Die Ältere Frage, die gestellt wurde hier Schnelle regex mit Alarm
- was
300.
? Ist, dass eine gültige Eingabe? - ja, das ist gut. wir können Streifen aus dem . wenn nichts folgt, es server-Seite
- ist nur ein
.
einen akzeptablen input? - Nein. Ich dachte, dass regex ( nicht, dass ich es verstehen oder wie es zu implementieren ) festgelegt werden konnte, zu erwarten, eine Zahl ( min 1 Zahl ) dann ist jede Kombination von entweder andere zahlen oder einen Zeitraum.
- Kann es sein, eine Nummer wie 123.45 oder hat das Teil nach einem Dezimalkomma (falls vorhanden) werden alle Nullen?
- kann aus einer beliebigen Kombination von Ziffern mit oder ohne Dezimalpunkt ( Zeit für die Amerikaner), und nur ein Dezimalpunkt , keine anderen Zeichen. Also nur zahlen und nur eine Periode ( in anderen Worten , Zeit ist nicht erforderlich, aber wenn man typisiert ist , nicht mehr eingegeben werden kann )
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man, in der
change
- Ereignis der Eingabe überprüfen, ob das Zahlenformat ist OK. Dieser code wird versucht, die Anzahl und entfernen alles andere: (ich gehe davon aus, dass du jQuery verwenden, wenn nicht, bitte tun)Sehe es hier.
BEARBEITEN: wenn Sie nicht über jQuery, dieser code macht das gleiche (zumindest in Chrome):
EDIT 2: nicht sicher, ob ich Folgen, aber man könnte hinzufügen, auch dies zu verhindern, Buchstaben und andere Zeichen vor die
change
Veranstaltung:event.keyCode
oderevent.which
. jQuery ist bereits die Normalisierung der das event-Objekt auf cross-browser, so können Sie immer den Wert ausevent.keyCode
.event.keyCode
, aber es hat nicht funktioniert in Firefox.keypress
Ansatz. Es sieht viel sauberer an mich, wenn Sie einfach, damit der Benutzer nichts eingeben und filtern Sie es mit derchange
Ereignis, wie meine ersten Beispiele.Hier ist meine Lösung(Es validiert auch Daten/Werte kopieren&einfügen):
Anwenden, um eine Eingabe, tun Sie den folgenden :
Wenn Sie wählen Sie Benutzerdefiniert aus, wie die Validierung geben Sie zur Angabe der gültigen Zeichen.
eg :
Cambraca Leitbild, Art der arbeiten, aber der beste ist der zuletzt genannte Ansatz , stornieren Sie das keypress-Ereignis-Filterung die keys vor, es zeigt sich stattdessen wieder rückgängig machen, was bereits getan wurde. Folge der Veränderung der Wert nach die Tatsache, daß er auf der position der Einfügemarke in das Feld ein.
Hier ist ein Beispiel für die Abstraktion der Idee ein cross-browser Weg. Jemand sollte dieser port an ein jQuery-plugin, http://www.qodo.co.uk/assets/files/javascript-restrict-keyboard-character-input.html
Ok, ich denke, ich werde-port. Aber ich bin kein jQuery Kerl, so ist dies ein
ungetestetbare bones jQuery-plugin, das verwendet Ihren codehttp://jsfiddle.net/mendesjuan/VNSU7/3
restrict