Eingabe in Textfeld verhindern
Koontz
- javascript
0 romy0 Alexander Foken
Hi,
ich habe ein ganz normales Textfeld in meinem Formular. Wenn der Anwender den Focus auf dem Textfeld hat und etwas eingeben will, wird im onKeyPress-Ereignis geprüft, welche Taste er gedrückt hat. Bestimmte Tasten sind nicht zugelassen. Die Eingabe erscheint natürlich trotzdem im Textfeld. Wie kann man das nun verhindern? Gibt es eine Funktion, die die Texteingabe abbricht o.ä.?
Ich habe es jetzt so gelöst, dass im KeyPress-Ereignis der aktuelle String im Textfeld zwischengespeichert wird und im KeyUp-Ereignis gegebenfalls den neuen String ersetzt. Diese Lösung finde ich jedoch etwas unelegant. Vielleicht weiss ja einer von Euch was besseres.
Gruss,
Koontz
Hi,
Gibt es eine Funktion, die die Texteingabe abbricht o.ä.?
Du kannst ja noch 10 Threads zum gleichen Thema aufmachen!?
lass die Funktion false zurückgeben und werte das auch aus.
Oder vielleicht einen backspace auslösen...
ciao
romy
Hm, und wie löst man einen Backspace aus?
Gruss,
Koontz
Hallo,
Du kannst den String aus dem Textfeld mit Javascript auslesen?
Du hast getestet, in welcher Reihenfolge die Aktionen durchgeführt werden? Alos, wird erst das onKeyPress-Ereignis ausgelöst, oder wird erst der neue Buchstabe ins Textfeld geschrieben?
Wann steht der neue Buchstabe in den Objekteigenschaften des durch onKeyPress an die dort angemeldete Funktion zur Verfügung? -> window.event.keyCode ist eine les- und beschreibbare Eigenschaft.
Das müsstest Du einfach prüfen, und wenn ein missliebiges Zeichen drin steht, dann scheibst Du da 0 rein, dann ist es weg.
Return false wird leider an dieser Stelle ignoriert, da der normale Handler von onKeyPress im textfeld an einer Stelle unterbrochen wird, wo ihn das Funktionsergebnis nicht interessiert.
Diese Methode funktioniert nur bei MS, nicht aber bei netscape. Dort musst Du mit captureEvents() arbeiten. Das ist in Self recht gut gezeigt.
Grüße
Tom
Moin Moin !
Der Ansatz ist falsch. Ich drücke F12 E (Opera: Enable/Disable Javascript), hacke alle Zeichen, die ich haben will in das Textfeld, drücke nochmal F12 E, und Du kannst absolut nichts dagegen tun.
Oder -- falls Du ein serverseitiges Programm absichern willst -- ich schreibe mein eigenes Formular mit ACTION="dein.cgi" und drücke deinem Programm so viel Müll rein, bis es platzt.
Will sagen: Eingabe-Validierung gehört auf die Server-Seite.
Alexander