[JS] keyCode geeft verkeerde ASCII waarde

Pagina: 1
Acties:
  • 190 views sinds 30-01-2008
  • Reageer

  • mosymuis
  • Registratie: Maart 2002
  • Laatst online: 07-01 19:39
Heya,

Ik ben nu een tijdje bezig met een ogenschijnlijk simpel scriptje, maar loop vast op vreemd gedrag van de browser. Deze geeft namelijk met event.keyCode verkeerde waardes terug voor de numerieke toetsen. De normale 5 geeft bijvoorbeeld #53, de numerieke 5 geeft #101. Die eerste klopt, die tweede niet, in de ASCII tabel staat #101 voor de e.

Testen kan met dit scriptje, deze werkt in Moz en IE hetzelfde.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<title>Test</title>
<script>

document.onkeyup = function(event)
{
    if ( event == null )
    {
        event = window.event;
    }

    document.body.innerHTML += String.fromCharCode(event.keyCode)+" (ASCII "+event.keyCode+")<br />";
}

</script>
</head>
<body></body>
</html>

Hoe kan ik nu de juiste waarde bepalen van ingedrukte numerieke toetsen?

Verwijderd

gaven de numerieke toetsen niet eerst een #0 en vervolgens een #iets ? ze geven iig wel iets anders als de corresponderende toetsen, anders zou je ze nooit uit elkaar kunnen houden

  • mosymuis
  • Registratie: Maart 2002
  • Laatst online: 07-01 19:39
Als dat al zo was, zou ik niet weten hoe ik dit in JavaScript kan detecteren. De handlers die ik nu gebruik (zie voorbeeld scriptje) geven voor elke keystroke maar één toets terug, ook voor de numerieke.

Verwijderd

maak er eens onkeypress van, dan komt ie toch met een #0 aanzetten, dus ik denk dat je toch wel in die richting moet zoeken

[ Voor 31% gewijzigd door Verwijderd op 07-06-2005 10:41 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
het zijn dan ook KEY-codes, en geen ASCII-codes die je terug krijgt :X
Twijfel nog even :P

[ Voor 26% gewijzigd door RobIII op 07-06-2005 10:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • mosymuis
  • Registratie: Maart 2002
  • Laatst online: 07-01 19:39
Verwijderd schreef op dinsdag 07 juni 2005 @ 10:41:
maak er eens onkeypress van, dan komt ie toch met een #0 aanzetten, dus ik denk dat je toch wel in die richting moet zoeken
Je hebt gelijk, het werkt nu wel in IE :) maar helemaal niet meer in Moz. :/

IE6 geeft nu keurig kloppende codes terug, maar Firefox 1.0.4 geeft voor alle toetsen een 0. Geen verbetering dus, maar we komen in de buurt. Ik begrijp dus dat beide browsers bij onkeyup in het geval van numerieke aanslagen een tweede, foutieve keycode erachteraan krijgen?

@Rob: hoe dan ook, ze werken hier hetzelfde, ik heb talloze bronnen op inet String.fromCharCode() zien gebruiken en dat werkt ook uitstekend, behalve op het numerieke deel.

Verwijderd

in fx geeft ie bij mij niet voor alle toetsen eerst een 0, namelijk voor de pijltjes toetsen niet.

maar ik denk dat RobIII stiekum ook wel een puntje heeft, als ik e of E intyp (shift e), komt ie met dezelfde code aanzetten (69) en in het shiftgeval met een extra 16.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 07 juni 2005 @ 11:21:
in fx geeft ie bij mij niet voor alle toetsen eerst een 0, namelijk voor de pijltjes toetsen niet.

maar ik denk dat RobIII stiekum ook wel een puntje heeft, als ik e of E intyp (shift e), komt ie met dezelfde code aanzetten (69) en in het shiftgeval met een extra 16.
D'r hangt me ook wel zoiets van bij, maar ik weet dat effe niet uit de blote bol en ik heb geen tijd/zin om het nu uit te zoeken. Lijkt me goed te Googlen ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1