Einfachste Möglichkeit, Zeichen in der HTML(5)-Texteingabe zu maskieren
Lesezeit: 3 Minuten
devios1
Hat HTML5 irgendeine Art von Textfeldmaskierung oder muss ich trotzdem trappen onkeydown etc.?
jbabey hat recht – “maskieren” wie das Blockieren bestimmter illegaler Zeichen, nicht das Verbergen dessen, was eingegeben wird.
Der beste (wie am einfachsten und zuverlässigsten) Weg, den ich gefunden habe, ist zu trapen onkeyup und führen Sie dann einfach eine Regex-Ersetzung für den Wert des Textfelds aus und entfernen Sie alle illegalen Zeichen.
Dies hat einige Vorteile:
Es ist einfach zu implementieren (eine Funktion, zwei Codezeilen).
Es ist zuverlässig und deckt alle Fälle ab, an die ich gedacht habe.
Tastenbefehle wie Kopieren/Einfügen, Alle auswählen oder Pfeiltasten werden nicht blockiert.
Der größte Nachteil ist jedoch, dass die eingegebenen Zeichen kurz angezeigt werden, bevor sie entfernt werden, wodurch es sehr hackisch und unprofessionell aussieht.
Warum nicht input von type="password" ?
– Zuul
4. Juni 2012 um 20:10 Uhr
Frage bedeutet wahrscheinlich, dass nur bestimmte Zeichen im Textfeld erscheinen dürfen, zum Beispiel Zahlen und (-) für Telefoneingaben
Sie müssen immer noch onkeydown ausführen (siehe stackoverflow.com/questions/15728261/…), es sei denn, Sie möchten eine Filterung im Reg-Ex-Stil, wie unten beschrieben.
– der coole MacTyp
1. September 2017 um 21:09 Uhr
Salut
Schau dir das Neue an HTML5-Eingabetypen. Diese weisen Browser an, eine clientseitige Filterung von Daten durchzuführen, aber die Implementierung ist in verschiedenen Browsern unvollständig. Das pattern Das Attribut filtert im Regex-Stil, aber Browser unterstützen dies wiederum nicht vollständig (oder überhaupt nicht).
Diese blockieren jedoch nicht die Eingabe selbst, sondern verhindern lediglich das Absenden des Formulars mit den ungültigen Daten. Du musst die immer noch fangen onkeydown -Ereignis, um die Tasteneingabe zu blockieren, bevor es auf dem Bildschirm angezeigt wird.
Um die Antwort zu verbessern, sollte ein Beispiel für Trapping onkeydown gegeben werden.
– der coole MacTyp
1. September 2017 um 21:01 Uhr
Eine grundlegende Validierung kann durch Auswahl von durchgeführt werden Typattribut von Eingabeelementen. Zum Beispiel: <input type="email" />
<input type="URL" />
<input type="number" />
Ja, laut HTML5-Entwürfen kann man das verwenden pattern -Attribut, um die zulässige Eingabe mithilfe eines regulären Ausdrucks anzugeben. Für einige Datentypen können Sie spezielle Eingabefelder verwenden, z <input type=email>. Aber diese Funktionen werden noch weitgehend nicht oder nur qualitativ schlecht unterstützt.
Ah gut! Genau so etwas hatte ich mir erhofft. Meine Google-Suche hat nichts ergeben. Leider scheint es noch nicht sehr weit verbreitet zu sein.
Leider scheint die Spezifikation nur zu definieren, wann ein Element unter Musterkonflikten leidet, nicht, wie der Browser damit umgehen soll. Im Idealfall würde es verhindern, dass die Eingabe jemals stattfindet, aber es könnte nur zu einem roten Rand oder so etwas Dummem führen.
– devios1
4. Juni 2012 um 20:43 Uhr
Stefan Romero
Etwas spät, aber ein nützliches Plugin, das tatsächlich eine Maske verwendet, um die Benutzereingabe etwas mehr einzuschränken.
Warum nicht
input
vontype="password"
?– Zuul
4. Juni 2012 um 20:10 Uhr
Frage bedeutet wahrscheinlich, dass nur bestimmte Zeichen im Textfeld erscheinen dürfen, zum Beispiel Zahlen und (-) für Telefoneingaben
– Heitor Chang
4. Juni 2012 um 20:13 Uhr
ich glaube er meint Maskenicht Maske
– jbaby
4. Juni 2012 um 20:14 Uhr
Sie müssen immer noch onkeydown ausführen (siehe stackoverflow.com/questions/15728261/…), es sei denn, Sie möchten eine Filterung im Reg-Ex-Stil, wie unten beschrieben.
– der coole MacTyp
1. September 2017 um 21:09 Uhr