Erhalte den Wert von input type="number" mit JS, wenn er nicht numerische Zeichen enthält

9

Diese Datei veranschaulicht das folgende Problem.

Das einfachste Beispiel ist:

%Vor%

Dies protokolliert 1 wie erwartet. DIESES jedoch:

%Vor%

protokolliert nur eine leere Zeichenfolge '' wegen des nicht numerischen Zeichens im Wert. Bei einigen Geräten + Browsern (z. B. Chrome) können Sie an diesen Eingängen nicht numerische Zeichen eingeben.

Das ist ärgerlich, weil ich den type="number" -Eingang für Geräte, die es unterstützen (z. B. iPhone, iPad-Nummer Tastatur) wollen. Allerdings möchte ich JavaScript verwenden, um zu verhindern, dass fehlerhafte Eingaben eingegeben werden - was das Abrufen des Werts von keyup erfordert - und dann die regulären Ausdrücke durch Ersetzen der nicht numerischen Zeichen.

Es scheint, dass jQuerys Methode .val () dasselbe Ergebnis liefert.

    
captainclam 26.03.2013, 00:33
quelle

2 Antworten

3

Das habe ich gesucht:

%Vor%

Ich verstehe, dass die Vermeidung von Benutzereingaben lästig sein kann und trotzdem ungültige Eingaben wie 1.2.3

erlaubt

Aber in dieser Situation ist es genau das, was ich brauchte. Hoffentlich wird es für jemand anderen von Nutzen sein. Danke an @ int32_t für den Vorschlag.

    
captainclam 26.03.2013, 23:21
quelle
0

Sie sollten <input type=number> nicht für Zahlen verwenden, die keine Zahlen sind (in sehr mathematischem Sinne - es funktioniert auch nicht für Telefonnummern oder Postleitzahlen) und das Löschen des Wertes ist absichtlich.

Sie können testen, ob das Gerät type=number unterstützt, und Ihr Fallback nur anschließen, wenn dies nicht der Fall ist:

%Vor%

Alternativ (besonders wenn Ihre Nummer eine Postleitzahl, Seriennummer usw. ist) können Sie Folgendes verwenden:

%Vor%

und das wird auch die Tastatur ändern.

    
Kornel 26.03.2013 01:07
quelle

Tags und Links