Thomas Schmieder: window.event.keyCode abfangen und false zurückgeben?

Hallo,

gibt es irgendeine Möglichkeit, die Weiterleitung des mit window.event.keyCode abgefragten Zeichens an das Objekt (input, textarea) zu verhindern?

Wir haben schon alles ausprobiert.

eventhandler, der dann nachfragt, ob das entsprechende Zeichen ( hier 226) kommt und dann false zurückgibt.

Das "return false" interessiert die Textarea aber kein Stück. Sie stellt das "<" trotzdem dar.

Wie kann man den Zeichenstrom von der Tastatur verändern?

Grüße

Tom

  1. Wir haben schon alles ausprobiert.

    eventhandler, der dann nachfragt, ob das entsprechende Zeichen ( hier 226) kommt und dann false zurückgibt.

    Das "return false" interessiert die Textarea aber kein Stück. Sie stellt das "<" trotzdem dar.

    Das Zeichen '<' hat den Code 60.

    Keine Ahnung was du machst, aber bei mir funktioniert das im Netscape 4 ohne Probleme:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <HTML>
    <HEAD>

    <STYLE TYPE="text/css">
    </STYLE>

    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    var Netscape = new Boolean();
    function keyEvent(evt)
    {
        if(evt && evt.which == 60) return false;
        if(evt) window.status = evt.which;
    }

    function init()
    {
    document.forms[0].test.onkeydown = keyEvent;
    }
    </SCRIPT>
    </HEAD>
    <BODY onload="init();">
    <form>
    <input type="text" name="test">
    </form>
    </BODY>
    </HTML>

    1. Hallo Struppi,

      danke für die Mühe.

      Wir haben den Fehler gefunden. onKeyPress arbeitet mit dem ASCII-Code und und onKeyDown mit dem Scancode der Taste. Da hatten wir Ursache und Wirkung gut durcheinandergebracht und uns dann gewundert, dass in der Textarea nichts passierte, obwohl das das Kontroll-Alert dauernd aufpoppte.

      Also: Textarea arbeitet mit ASCII-Code, also funktioniert zum Abfangen auch nur onKeyPress

      Bei MSIE nützt das "return false" trotzdem nichts, dafür kann man einfach die Eigenschaft "window.event.keyCode = 0;" schreiben. Dann ist das Zeichen gekillt.

      Brutal, oder?

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
      1. Hi Tom,

        Wir haben den Fehler gefunden. onKeyPress arbeitet mit dem ASCII-Code und und onKeyDown mit dem Scancode der Taste. Da hatten wir Ursache und Wirkung gut durcheinandergebracht und uns dann gewundert, dass in der Textarea nichts passierte, obwohl das das Kontroll-Alert dauernd aufpoppte.
        Also: Textarea arbeitet mit ASCII-Code, also funktioniert zum Abfangen auch nur onKeyPress
        Bei MSIE nützt das "return false" trotzdem nichts, dafür kann man einfach die Eigenschaft "window.event.keyCode = 0;" schreiben. Dann ist das Zeichen gekillt.

        Brutal, oder?

        Zweifellos, aber es nützt nichts. Du machst den fatalen Fehler zu glauben, JS ist entweder aktiv oder nicht. Das ist nicht der Fall. Wenn ich merke, dass ich bestimmte Zeichen nicht eingeben kann, dann mache ich JS für die Eingabe aus und hinterher wieder an. Wir müssen uns was anderes einfallen lassen, um die > und < zu filtern.

        Fabian

        1. Hallo Fabian,

          Bei MSIE nützt das "return false" trotzdem nichts, dafür kann man einfach die Eigenschaft "window.event.keyCode = 0;" schreiben. Dann ist das Zeichen gekillt.

          Brutal, oder?
          Zweifellos, aber es nützt nichts. Du machst den fatalen Fehler zu glauben, JS ist entweder aktiv oder nicht. Das ist nicht der Fall. Wenn ich merke, dass ich bestimmte Zeichen nicht eingeben kann, dann mache ich JS für die Eingabe aus und hinterher wieder an. Wir müssen uns was anderes einfallen lassen, um die > und < zu filtern.

          Du denkst verkehrt herum.
          Ohen JavaScript funktioniert der Dialog-Editor überhaupt nicht und man muss die gute alte Batchverarbeitung über den Server benutzen. Also immer brav eingeben, senden (Request), verarbeiten, zurücksenden (Response), anschauen und ärgern, dass es immer noch nicht so aussieht, wie man wollte.

          Wieso sollte man nicht auf einem sowieso total überdimensionierten Client eine "Echtzeit-Vorschau" generieren, bevor man dann das fertig aufbereitete Form zur Verarbeitung an den Server schickt.

          Das betrifft die Positionierung von Bildern genauso, wie das Formatieren von Text usw. Das kann man mit Drag & Drop und WYSIWYG viel intuitiver, als mit stumpfer Eingabe von Parametern.

          Und wieso scheinen hier immer alle[*] zu glauben, dass jeder User, der ein Autorensystem übers Web benutzt ein ganz gemeiner Hacker ist und dass die Leute, die sich das System ausdenken total verblödet sind?

          [*] Karikatur bedeutet, einzelne Eigenschaften in Ihrer Darstellung zu übertreiben :-))

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
          1. Wieso sollte man nicht auf einem sowieso total überdimensionierten Client eine "Echtzeit-Vorschau" generieren, bevor man dann das fertig aufbereitete Form zur Verarbeitung an den Server schickt.

            Ob das mein K-266 (oder bei mir auf der Arbeit P100) auch so sehen ist die Frage. Allerdings bezweifele ich das ich sowas brauche. Genau wie 99% aller Wordbenutzer kein Word bräuchten insofern ist überdimensoniert in dem Fall 100% richtig ;-)

            Struppi.

            ich benutz für meine 1-seitigen Briefe AmiPro

            1. Hallo Struppi,

              Ob das mein K-266 (oder bei mir auf der Arbeit P100) auch so sehen ist die Frage. Allerdings bezweifele ich das ich sowas brauche. Genau wie 99% aller Wordbenutzer kein Word bräuchten insofern ist überdimensoniert in dem Fall 100% richtig ;-)

              Genau dieses Thema wird uns heute beschäftigen. Wir haben gestern schon mal sondiert, welches denn der schwächste PC im Hause ist, auf dem trotzdem "schon" Win98 läuft. Ich denke, da haben wir noch einen 486er  mit 32MB Speicher (mehr kann das Board leider nicht) und sagenhaften 40Mhz. Der müsste es doch bringen, oder?

              Die alten P1/100 mit 64MB oder mehr hat das bisschen Byteschieberei jedenfalls nicht gestört. Da braucht ist ein simples Solitaire beim Umlegen einer Karte schon mehr Performance.

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
              1. Die alten P1/100 mit 64MB oder mehr hat das bisschen Byteschieberei jedenfalls nicht gestört. Da braucht ist ein simples Solitaire beim Umlegen einer Karte schon mehr Performance.

                :-( isch habe nur 32MB und nur Win95.

                Aber ich glaub schon, das eine dHTML Animation, im dafür passendene Browser, deutlich mehr Performance frist (und sei es der Browser) als Solitaire.

                (Das bringt mich gerade auf eine Idee - hab schon lang kein Freecell mehr gespielt :-) )

                Struppi.

                1. Hi Struppi,

                  :-( isch habe nur 32MB und nur Win95.

                  dash reischt doch...

                  Aber ich glaub schon, das eine dHTML Animation, im dafür passendene Browser, deutlich mehr Performance frist (und sei es der Browser) als Solitaire.

                  Nö, das muss nicht sein. Nur Speicher frisst sie eben, weil die Objekte ja immer dicke Grafik enthalten.

                  (Das bringt mich gerade auf eine Idee - hab schon lang kein Freecell mehr gespielt :-) )

                  ===================================================================
                    Hab ich noch nie gespielt, aber geht das nicht auch übers Internet?
                    ===================================================================

                  Liebe Grüße aus http://www.braunschweig.de

                  Tom

                  --
                  Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.