Javascript Tastatureingabe Filterung

8

Hat jemand einen funktionierenden dynamischen Javascript-Eingabefilter, der Texteingaben über mehrere Browser hinweg begrenzt?

Ich habe mehrere Beispiele online gesehen, aber die meisten von ihnen scheinen Fehler zu haben oder es fehlt die Unterstützung für Multi-Browser.

Mein aktueller Versuch ist unten veröffentlicht, aber es ist fehlgeschlagen für verschobene Zahlen unter Firefox, und ich habe noch andere Browser nicht ausprobiert.

Wie Ссылка zeigt, ist das kein einfaches Problem.

Hat jemand eine bessere Lösung?

%Vor%

Es würde über

verwendet werden

<input type="text" name="pw[first_name]" size="15" maxlength="15" onkeypress="return isAlphaKey(event)">

    
lief79 17.06.2009, 20:43
quelle

3 Antworten

2

Trapping von Tastaturereignissen wird sowieso nicht funktionieren, da der Benutzer immer Bearbeiten | verwenden kann Einfügen. Selbst wenn Sie eine browserübergreifende Lösung finden, kann der Benutzer immer alles umgehen, indem er Javascript deaktiviert.

Mit anderen Worten, verschwende deine Zeit nicht. Geben Sie dem Benutzer nur einen Fehler, wenn er versucht, ungültige Daten zu senden.

    
Josh Stodola 17.06.2009 21:11
quelle
2

Würde ich nach der Eingabe ungültige Werte überprüfen und entfernen?

Das Überprüfen von charCode und keyCode kann im Browser ziemlich schwierig werden. Warum nicht den Wert prüfen, der tatsächlich zum Textfeld hinzugefügt wird?

Kehren Sie Ihre regulären Ausdrücke um und sie stimmen mit allem überein, was Sie nicht wollen . Sobald Sie dies haben, verwenden Sie einfach Ihren invertierten regulären Ausdruck, um Daten zu ersetzen, die in Ihre Eingabefelder eingefügt wurden, die Sie nicht möchten.

Ein kurzes Beispiel, das ich unter Ссылка erstellt habe, enthält ein Textfeld, das NUR Ganzzahlen akzeptiert. Es hat einen kleinen JavaScript-Block, der Nicht-Ziffern aus dem Feld entfernt:

%Vor%

Und das Eingabefeld wird mit einem keyup-Ereignis deklariert, um alles einzufangen, was eingegeben wurde:

%Vor%

Das ist sicher nicht perfekt. Dinge, die du noch tun musst:

  1. Serverseite validieren. Die Validierung auf der Clientseite wird niemals alle Fehler Ihrer Benutzer erfassen. Überprüfen Sie die Serverseite trotzdem immer.
  2. Vervollkommnen Sie die Kontrollen. Dies ist eine einfache Regexp, einige könnten am Ende komplexer sein
  3. Fangen Sie Ereignisse ein, damit die Ereignisse zum Einfügen der Maus auf die gleiche Weise konvertiert werden.
  4. Zeigen Sie dem Benutzer eine Warnung an, dass "nur X erlaubt" sind, wenn Sie Text entfernen müssen. Sonst könnten sie einfach denken, dass "der Browser witzig ist".
coderjoe 30.07.2009 14:42
quelle
-1

Hier ist ein Weg, es zu tun:

  • Erstellen Sie ein "Pseudofeld" - hier erscheint die Eingabe für den Benutzer
  • Wenn Sie darauf klicken, setzen Sie den Fokus auf ein verstecktes Feld
  • Lassen Sie den Benutzer in das ausgeblendete Feld eingeben
  • Sehen Sie sich an, was eingegeben wird, und kopieren Sie die gültigen Zeichen in das Pseudofeld

Der Benutzer denkt, er tippt in das Feld, aber nicht.

    
quelle

Tags und Links