forumfan: character von keyCode ermitteln

Hallo,

ich habe folgende Funktion:

this.input.onkeydown = function(e) {

//-- microsoft IE oder Mozilla-Schiene?
 var myEvent = document.all ? event : e;
 var obj = document.all ? myEvent.srcElement : myEvent.target;
 var usrKeyCode = document.all ? myEvent.keyCode : myEvent.which;

alert( String.fromCharCode( usrKeyCode ) );

}

Wenn ich in dem jeweiligen input-Feld ein Minus-Zeichen eintippe ('-'), hat die Variable usrKeyCode den Wert 109. Wenn ich aber hinterher das entsprechende Zeichen (also '-') ermitteln will, liefert die String.fromCharCode-Methode ein 'm' zurück.

Ich habe auch bereits in der ASCII-Tabelle nachgeschaut. Nach meinem Verständnis müsste der usrKeyCode eigentlich 45 sein (weil das ist auch der ASCII-Code für '-'). Wieso bekomme ich hier von Javascript den Wert 109?

Vielen Dank.
forumfan

  1. @@forumfan:

    Nach meinem Verständnis müsste der usrKeyCode eigentlich 45 sein (weil das ist auch der ASCII-Code für '-'). Wieso bekomme ich hier von Javascript den Wert 109?

    Du verwechselst Tastaturcode und Zeichencode.

    Live long and prosper,
    Gunnar

    --
    Flughafen in Tempelhof
    findet jeder Hempel doof.
    1. Hi,

      das beantwortet aber nicht meine Frage. Wie ich mich richtig erinnere, funktioniert charCode für Firefox (und möglicherweise mit mehreren Browsern) nicht und liefert immer 0 zurück. Wie wandle ich den KeyCode in das jeweilige Zeichen um?

      thx
      forumfan

      @@forumfan:

      Nach meinem Verständnis müsste der usrKeyCode eigentlich 45 sein (weil das ist auch der ASCII-Code für '-'). Wieso bekomme ich hier von Javascript den Wert 109?

      Du verwechselst Tastaturcode und Zeichencode.

      Live long and prosper,
      Gunnar

  2. Hi,

    this.input.onkeydown = function(e) {

    //-- microsoft IE oder Mozilla-Schiene?
    var myEvent = document.all ? event : e;
    var obj = document.all ? myEvent.srcElement : myEvent.target;
    var usrKeyCode = document.all ? myEvent.keyCode : myEvent.which;

    alert( String.fromCharCode( usrKeyCode ) );

    }

    Einige Anmerkungen:

    prüfe nicht auf document.all, sondern auf e:

    var myEvent = e ? e : window.event;
    oder auch schön:

    var myEvent = e || window.event;

    selbiges für den Rest.
    var obj = myEvent.target || myEvent.srcElement;

    ich würde immer erst auf den Standard prüfen.

    Zweitens:

    onkeydown liefert den Tastaturcode. Was du brauchst, ist onkeypress.

    im FF kriegst den charCode dann über e.charCode, im IE steckt der Charcode in e.keyCode.

    Gruß!

    1. Also ich sag euch, javascript ist so richtig grauslich.

      Hi,

      this.input.onkeydown = function(e) {

      //-- microsoft IE oder Mozilla-Schiene?
      var myEvent = document.all ? event : e;
      var obj = document.all ? myEvent.srcElement : myEvent.target;
      var usrKeyCode = document.all ? myEvent.keyCode : myEvent.which;

      alert( String.fromCharCode( usrKeyCode ) );

      }

      Einige Anmerkungen:

      prüfe nicht auf document.all, sondern auf e:

      var myEvent = e ? e : window.event;
      oder auch schön:

      var myEvent = e || window.event;

      selbiges für den Rest.
      var obj = myEvent.target || myEvent.srcElement;

      ich würde immer erst auf den Standard prüfen.

      Zweitens:

      onkeydown liefert den Tastaturcode. Was du brauchst, ist onkeypress.

      im FF kriegst den charCode dann über e.charCode, im IE steckt der Charcode in e.keyCode.

      Gruß!

      1. Hallo forumfan!

        Also ich sag euch, javascript ist so richtig grauslich.

        Na, wenn das mal Struppi liest ;)

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        Nichts ist unmöglich? Doch!
        Heute schon gegökt?
      2. Also ich sag euch, javascript ist so richtig grauslich.

        Ich hab's gelesen, was findest du den nicht grauslich?

        Struppi.

      3. Mahlzeit,

        Also ich sag euch, javascript ist so richtig grauslich.

        TOFU auch.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. Hi Christian,

      thx für eure antworten. eines ist noch anzumerken: im FF funktioniert es nur bei onkeypress (und nicht onkeydown).

      forumfan

      Hi,

      this.input.onkeydown = function(e) {

      //-- microsoft IE oder Mozilla-Schiene?
      var myEvent = document.all ? event : e;
      var obj = document.all ? myEvent.srcElement : myEvent.target;
      var usrKeyCode = document.all ? myEvent.keyCode : myEvent.which;

      alert( String.fromCharCode( usrKeyCode ) );

      }

      Einige Anmerkungen:

      prüfe nicht auf document.all, sondern auf e:

      var myEvent = e ? e : window.event;
      oder auch schön:

      var myEvent = e || window.event;

      selbiges für den Rest.
      var obj = myEvent.target || myEvent.srcElement;

      ich würde immer erst auf den Standard prüfen.

      Zweitens:

      onkeydown liefert den Tastaturcode. Was du brauchst, ist onkeypress.

      im FF kriegst den charCode dann über e.charCode, im IE steckt der Charcode in e.keyCode.

      Gruß!