Koontz: Eingabe in Textfeld verhindern

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

  1. 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

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. Hm, und wie löst man einen Backspace aus?

      Gruss,
      Koontz

      1. 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

  2. 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

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"