jQuery: ändern der input-Wert bei Tastendruck
Immer, wenn ein Punkt '.' eingegeben wird, in meinem Eingang (Typ=Zahl) Feld, möchte ich es ersetzt durch ein Komma ','.
$(box).find('input[type=number]').keypress(function(evt){
if(evt.which==46){
$(this).val($(this).val()+',');
evt.preventDefault();
}
});
Das Ereignis wird auch ausgelöst, sondern das Feld wird völlig leer. Was ist falsch?
BEARBEITEN
Der Grund, warum ich dies mache ist, dass Chrome (neueste version), im Gegensatz zu den HTML5-Empfehlung, Verwendung von Komma-und Ausschuss-Punkt input type=Zahl. Ich bin derzeit nur für die Entwicklung für Chrome Ursache kann ich nicht testen, meine app woanders für den moment. Jeder Kommentar auf dieser (abnorme ?) situation würde geschätzt.
Es wird empfohlen, zu verwenden
hat ein
Eingang
eigentlich ist das, was das W3C sagt zu Typ=Zahl, aber Chrome im Gegenteil akzeptiert nur Kommas und löschen von Punkten und alles andere kommt danach. Das ist, warum ich wollte, dies zu tun in den ersten Platz.
keyup nicht sogar das Ereignis ausgelöst.
keyup
Veranstaltung statt.hat ein
alert($(this).val())
zeigen allesEingang
type="number"
wird nicht akzeptieren, Komma ,
. Sie müssen möglicherweise ändern Sie die Eingabe type=text
eigentlich ist das, was das W3C sagt zu Typ=Zahl, aber Chrome im Gegenteil akzeptiert nur Kommas und löschen von Punkten und alles andere kommt danach. Das ist, warum ich wollte, dies zu tun in den ersten Platz.
keyup nicht sogar das Ereignis ausgelöst.
InformationsquelleAutor pH Cito | 2012-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies könnte funktionieren, wenn Sie Text eingeben, und will immer to setzen Sie das ',' Zeichen am Ende des Textes. Aber was, wenn Sie setzen Sie den cursor in der Mitte des Textes, und drücken Sie dann die a '. ' - Zeichen?
InformationsquelleAutor Chieleman
Vielleicht ist Ihr Dokument nicht schon fertig:
InformationsquelleAutor Luca Davanzo
Konnte man sich nur mit einer substring-wie so:
Dies ist jedoch vermutlich nicht die ideale Lösung.
InformationsquelleAutor James McDonnell
Dein code scheint zu funktionieren, während es läuft auf jsfiddle:
http://jsfiddle.net/cornel_gav/cDE3L/
type=text
aber OP ist mit Eingangtype=number
.InformationsquelleAutor Cornel
hier sind wir, mein Freund, weiß nicht warum, es scheint, die nützlich keycode 190 statt 110.
versuchen :
und dieses für eine live-Vorschau
http://jsfiddle.net/RTEcJ/8/
werfen Sie einen Blick auf Tasten und können Sie versuchen, in der Eingabe zu prüfen, die den Schlüsselcode, die Sie benötigen:
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
on()
wird nicht funktionieren. Noch wichtiger ist, mitkeyup
,evt.which
entspricht dem keycode und nicht die charcode. Anstelle von 46, es werden 110 für numpad Punkt, und andere, für andere Möglichkeiten, es zu tun (je nach Tastatur-mapping).versuchen Sie nun bitte, dann bin ich wirklich schlage vor, Sie aktualisieren Sie jQuery-vers.
NÖ, immer noch dasselbe Verhalten: Feld geht schlicht leer...
ist jetzt behoben, sorry für die Verspätung 😉
Egal, ob mit .keypress .keyup .keydown .bind(drücken/oben/unten), .live(drücken/oben/unten). Dasselbe Verhalten.
InformationsquelleAutor itsme
Machen den char-Ersatz-Arbeit zu jeder cursor-position, konnte Sie binden an den keyup-Ereignis aus, und ersetzen Sie die bereits eingefügte Zeichen in diesem.val().
InformationsquelleAutor user4240171