Skip to content

Alt om WordPress, webutvikling — og mer til

📋 JavaScript-tastekoder: komplett tabell over event.key, event.code og event.which

📋 JavaScript-tastekoder: komplett tabell over event.key, event.code og event.which

En bruker trykker Escape, og modalen lukkes ikke. De trykker Enter i søkefeltet, og ingenting skjer. Høres det kjent ut? Tastaturhåndtering i JavaScript virker enkelt helt til du begynner å håndtere tre hendelser, et dusin egenskaper og en jungel av nettleserforskjeller.

Hver keydown eller keyup skaper et KeyboardEvent-objekt med to dusin felter. Noen har vært utdaterte siden IE-tiden, andre oppfører seg forskjellig i Firefox og Chrome. Og MDN-dokumentasjonen er full av «ikke bruk»-merknader. Utviklere trenger ikke enda en spesifikasjon, de trenger et jukseark som fungerer.

Nedenfor finner du en komplett referanse for tastaturhendelser: fra anatomien til KeyboardEvent til ferdige kodebiter for hurtigtaster. Bokmerk kodetabellen, du får bruk for den i omtrent annethvert prosjekt.

💡 Rask oversikt:

  • Bruk keydown i stedet for keypress: det fungerer for alle taster.
  • event.key gir tastens symbol, event.code returnerer dens fysiske kode.
  • event.keyCode og event.which er utdaterte, ikke bruk dem i ny kode.
  • Tabellen nedenfor samler koder for alle standardtaster i moderne nettlesere.

Hva KeyboardEvent inneholder

Når en bruker trykker en tast, oppretter nettleseren et KeyboardEvent-objekt, en etterkommer av UIEvent, som igjen utvider basisen Event. Inni ligger tastens egenskaper, modifikatortilstand og layoutinformasjon.

Arvehierarki for KeyboardEvent-grensesnittet i JavaScript

Spesifikasjonen for UI Events er i utvikling: nye egenskaper dukker opp, gamle blir utdaterte. Den største endringen de siste årene er overgangen fra numeriske koder (keyCode / charCode / which) til fordel for event.key og event.code. Alle moderne nettlesere støtter dette paret, og du bør bygge logikken din på dem.

Nettleserstøtten er nesten komplett: Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Hvis prosjektet ditt ikke sitter fast med IE11, kan du glemme event.which.

Tre hendelser: keydown, keypress og keyup

Nettleseren skiller mellom tre tastaturhendelser. Rekkefølgen de utløses i er fast:

  • keydown, tast trykkes ned (kontaktøyeblikket);
  • keypress, tast holdes nede og genererer et tegn (kun for tegntaster);
  • keyup, tast slippes.

Abonner på keydown via addEventListener:

1const input = document.getElementById('type-here');
2
3input.addEventListener('keydown', function (event) {
4 console.log('Нажата:', event.key, '| Код:', event.code);
5});

For innebygde handlere, bruk et elementattributt:

1<input type="text" id="type-here" onkeyup="handleKey(event)">

Hvis du sender hendelsesobjektet til konsollen, ser du hele strukturen med alle arvede felter fra UIEvent og Event:

Keyup-hendelsesobjektet i nettleserkonsollen med alle KeyboardEvent-egenskaper

Hvorfor keydown er hovedvalget

keypress er offisielt anerkjent som utdatert. Den utløses bare for taster som produserer en tegnverdi, og fanger ikke opp modifikatorer: ikke Alt, ikke Ctrl, ikke Shift, ikke Meta. Du kan ikke håndtere Ctrl+Z eller Shift+Tab gjennom keypress.

Forskjellen mellom keydown og keyup: keydown utløses før nettleseren behandler tasten; keyup utløses etterpå. En viktig konsekvens følger: event.preventDefault() inne i keydown avbryter nettleserhandlingen (for eksempel å skrive inn et tegn i et felt), men inne i keyup gjør den det ikke. For hurtigtaster, inndatavalidering og spillkontroller trenger du keydown.

Egenskapstabell for KeyboardEvent

Egenskap / Metode

Hva den returnerer

Status

event.key

Tegnverdi for den trykte tasten: "a", "Enter" eller "ArrowUp"

Gjeldende

event.code

Fysisk kode for tasten på tastaturet: "KeyA", "Enter" eller "ArrowUp"

Gjeldende

event.altKey

true hvis Alt holdes nede

Gjeldende

event.ctrlKey

true hvis Control holdes nede

Gjeldende

event.shiftKey

true hvis Shift holdes nede

Gjeldende

event.metaKey

true hvis Meta holdes nede (Windows / Command på Mac)

Gjeldende

event.getModifierState()

true for aktiv tilstand for CapsLock, NumLock, Alt, Control, Shift eller Meta

Gjeldende

event.keyCode

Numerisk tastekode (for eksempel 65 for A)

Utdatert

event.charCode

Unicode-kode for tegnet

Utdatert

event.which

Numerisk tastekode (analog med keyCode)

Utdatert

De tre nederste radene er utdaterte. Bytt til event.key der det er mulig. Hvis du må støtte en gammel nettleser, lag en fallback:

1window.addEventListener('keydown', function (event) {
2 const key = event.key !== undefined ? event.key : event.which;
3 if (key !== undefined) {
4 console.log('Клавиша:', key);
5 }
6});

Men i 2026 er slik kode bare for eldre prosjekter. event.key fungerer overalt.

Modifikatortaster og kombinasjoner

Control-, Shift-, Alt- og Meta-taster utfører ikke handlinger alene, men endrer oppførselen til andre taster. Å trykke Z gir bokstaven «z», mens Ctrl+Z utfører angre.

Boolske egenskaper ved hendelsen hjelper med å spore en modifikator:

1document.getElementById('editor').addEventListener('keydown', function (event) {
2 if (event.ctrlKey && event.key === 'z') {
3 event.preventDefault();
4 undoAction();
5 }
6
7 if (event.ctrlKey && event.shiftKey && event.key === 'z') {
8 event.preventDefault();
9 redoAction();
10 }
11});

Samme tilnærming gjelder for alle kombinasjoner: Ctrl+S (lagre), Ctrl+Shift+N (nytt vindu), Alt+Tab (bytt). Sjekk rekkefølge: først modifikatorer via boolske flagg, deretter event.key for den spesifikke tasten. Dette gjør logikken lesbar i stedet for å drukne i numeriske koder.

Komplett tabell over tastekoder

Nedenfor er den gjeldende tabellen for alle standardtaster. Verdiene event.key og event.code er angitt slik moderne nettlesere (Chrome, Firefox, Edge, Safari) returnerer dem.

Tast

event.which

event.key

event.code

Merknad

Backspace

8

Backspace

Backspace

Tab

9

Tab

Tab

Enter

13

Enter

Enter

Shift (venstre)

16

Shift

ShiftLeft

event.shiftKey = true

Shift (høyre)

16

Shift

ShiftRight

event.shiftKey = true

Ctrl (venstre)

17

Control

ControlLeft

event.ctrlKey = true

Ctrl (høyre)

17

Control

ControlRight

event.ctrlKey = true

Alt (venstre)

18

Alt

AltLeft

event.altKey = true

Alt (høyre)

18

Alt

AltRight

event.altKey = true

Pause / Break

19

Pause

Pause

Caps Lock

20

CapsLock

CapsLock

Escape

27

Escape

Escape

Mellomrom

32

Space

event.key - enkelt mellomrom

Page Up

33

PageUp

PageUp

Page Down

34

PageDown

PageDown

End

35

End

End

Home

36

Home

Home

Pil venstre

37

ArrowLeft

ArrowLeft

Pil opp

38

ArrowUp

ArrowUp

Pil høyre

39

ArrowRight

ArrowRight

Pil ned

40

ArrowDown

ArrowDown

Print Screen

44

PrintScreen

PrintScreen

Insert

45

Insert

Insert

Delete

46

Delete

Delete

Tallrekke (hovedtastatur)

Tast

event.which

event.key

event.code

0

48

0

Digit0

1

49

1

Digit1

2

50

2

Digit2

3

51

3

Digit3

4

52

4

Digit4

5

53

5

Digit5

6

54

6

Digit6

7

55

7

Digit7

8

56

8

Digit8

9

57

9

Digit9

Bokstaver A-Å

Tast

event.which

event.key

event.code

A

65

a

KeyA

B

66

b

KeyB

C

67

c

KeyC

D

68

d

KeyD

E

69

e

KeyE

F

70

f

KeyF

G

71

g

KeyG

H

72

h

KeyH

I

73

i

KeyI

J

74

j

KeyJ

K

75

k

KeyK

L

76

l

KeyL

M

77

m

KeyM

N

78

n

KeyN

O

79

o

KeyO

P

80

p

KeyP

Q

81

q

KeyQ

R

82

r

KeyR

S

83

s

KeyS

T

84

t

KeyT

U

85

u

KeyU

V

86

v

KeyV

W

87

w

KeyW

X

88

x

KeyX

Y

89

y

KeyY

Z

90

z

KeyZ

event.key returnerer den lille bokstaven for bokstaver. event.code avhenger ikke av store/små bokstaver eller layout: KeyA betyr den fysiske A-tasten, selv om layouten er russisk og inndata er «Ф».

Spesialtaster

Tast

event.which

event.key

event.code

Merknad

Venstre Windows

91

Meta

MetaLeft

event.metaKey = true

Høyre Windows

92

Meta

MetaRight

event.metaKey = true

Kontekstmeny

93

ContextMenu

ContextMenu

Numerisk tastatur (Numpad)

Tast

event.which

event.key

event.code

Numpad 0

96

0

Numpad0

Numpad 1

97

1

Numpad1

Numpad 2

98

2

Numpad2

Numpad 3

99

3

Numpad3

Numpad 4

100

4

Numpad4

Numpad 5

101

5

Numpad5

Numpad 6

102

6

Numpad6

Numpad 7

103

7

Numpad7

Numpad 8

104

8

Numpad8

Numpad 9

105

9

Numpad9

Numpad Multiply

106

*

NumpadMultiply

Numpad Add

107

+

NumpadAdd

Numpad Subtract

109

-

NumpadSubtract

Numpad Decimal

110

.

NumpadDecimal

Numpad Divide

111

/

NumpadDivide

Funksjonstaster

Tast

event.which

event.key

event.code

F1

112

F1

F1

F2

113

F2

F2

F3

114

F3

F3

F4

115

F4

F4

F5

116

F5

F5

F6

117

F6

F6

F7

118

F7

F7

F8

119

F8

F8

F9

120

F9

F9

F10

121

F10

F10

F11

122

F11

F11

F12

123

F12

F12

System og multimedia

Tast

event.which

event.key

event.code

Merknad

Num Lock

144

NumLock

NumLock

Scroll Lock

145

ScrollLock

ScrollLock

Demp

173

AudioVolumeMute

AudioVolumeMute

I Firefox event.which = 181, event.code = VolumeMute

Volum ned

174

AudioVolumeDown

AudioVolumeDown

I Firefox event.which = 182, event.code = VolumeDown

Volum opp

175

AudioVolumeUp

AudioVolumeUp

I Firefox event.which = 183, event.code = VolumeUp

Mediaspiller

181

LaunchMediaPlayer

LaunchMediaPlayer

I Firefox event.which = 0, event.code = MediaSelect

Start app 1

182

LaunchApplication1

LaunchApplication1

I Firefox event.which = 0, event.code = LaunchApp1

Start app 2

183

LaunchApplication2

LaunchApplication2

I Firefox event.which = 0, event.code = LaunchApp2

Tegnsetting og symboler

Tast

event.which

event.key

event.code

Merknad

Semikolon (;)

186

;

Semicolon

I Firefox event.which = 59

Lik (=)

187

=

Equal

I Firefox event.which = 61

Komma (,)

188

,

Comma

Minus (-)

189

-

Minus

I Firefox event.which = 173

Punktum (.)

190

.

Period

Skråstrek (/)

191

/

Slash

Gravis () | 192 |

Backquote

Venstre hakeparentes ([)

219

[

BracketLeft

Omvendt skråstrek ()

220

\

Backslash

Høyre hakeparentes (])

221

]

BracketRight

Apostrof (')

222

'

Quote

Viktige tabellmerknader

  • event.which er en utdatert egenskap, bruk event.key.
  • event.code er identisk for små (a) og store (A) bokstaver, det er den fysiske tasten. event.key returnerer det faktiske tegnet med hensyn til store/små bokstaver.
  • I Firefox er event.which-verdiene for Equal, Semicolon og Minus forskjellige fra Chrome/Edge/Safari (notert i tabellen). Enda en grunn til ikke å bruke event.which.
  • Chromium-baserte nettlesere og Firefox gir identiske event.key og event.code for alle oppførte taster.
  • Virtuelle tastaturer: UI Events-spesifikasjonen krever at et virtuelt tastatur (mobil, skjermbasert) som gjentar et standardoppsett returnerer korrekt event.code. I praksis håndterer mobile nettlesere (Chrome Android, Safari iOS) keydown/keyup korrekt for hovedtaster, men event.code kan være tom for ikke-standardoppsett.

Interaktiv trener

Interaktiv trener for tastaturhendelser i JavaScript

For rask verifisering av kode fra artikkelen, bruk tastaturtreneren: keyevents.netlify.app. Flytt markøren til området, trykk taster og se verdiene for event.key, event.code og event.which, samt modifikatorflagg i sanntid. Kildekode er tilgjengelig på GitHub.

Video: tastaturhendelser i praksis

En kort praktisk gjennomgang av keydown og keyup, arbeid med modifikatorer og hurtigtaster med levende eksempler:

⁉️🤔 Ofte stilte spørsmål

Hva er forskjellen mellom event.key og event.code?

event.key returnerer tegnverdien med hensyn til layout og store/små bokstaver: for A-tasten er det "a" (eller "A" med Shift), for russisk layout, "ф". event.code returnerer den fysiske tastekoden, identisk for alle layouter: "KeyA". For hurtigtaster er event.code mer pålitelig, den avhenger ikke av inndataspråk. For tekstinndata, bruk event.key.

Hvorfor brukes ikke keypress lenger?

W3C-spesifikasjonen markerte keypress som utdatert: den utløses bare for tegntaster og fanger ikke opp modifikatorer. Du kan ikke håndtere Ctrl+C, Shift+Tab og andre kombinasjoner gjennom keypress. keydown dekker alle taster og støttes identisk i alle moderne nettlesere.

Kan man fullstendig forlate event.which og event.keyCode?

Ja, i 2026 kan du det. event.key støttes i Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Hvis prosjektet ditt ikke retter seg mot IE11 eller Firefox 28, bruk kun event.key og event.code.

Hvordan håndterer man et langt tastetrykk?

Kombiner keydown og keyup. Ved keydown start en timer eller requestAnimationFrame, ved keyup, nullstill den. For spillinndata er dette standardmønsteret: tast holdes, figur beveger seg, slippes, stopper.

Fungerer tastaturhendelser på mobile enheter?

keydown og keyup fungerer i mobile nettlesere ved bruk av eksternt Bluetooth-tastatur. Skjermtastaturet genererer input-hendelser, ikke keydown/keyup for alle taster, så for tekstfelt på mobil er det bedre å bruke input-hendelsen.

Hvordan skiller man venstre Shift fra høyre?

Gjennom event.code: "ShiftLeft" eller "ShiftRight". event.key returnerer "Shift" for begge. Samme for Control, Alt og Meta.

Hva du bør bruke i prosjektet ditt

Hvis du skriver ny kode, bruk keydown som hovedhendelse, og for tasteidentifikasjon, event.key (symbol) og event.code (fysisk tast). Denne kombinasjonen dekker alle scenarioer: hurtigtaster, navigasjon, spillinndata, skjemavalidering.

Hvis du vedlikeholder et produkt med gammel kode på event.which eller event.keyCode, planlegg en refaktorering. Arbeidsmengden er liten: erstatning i handlere, men fordelen er ren, forutsigbar kode uten en jungel av nettleserforskjeller.

Hold tabellen over bokmerket. Neste gang du trenger koden for en bestemt tast, åpner du den og kopierer den nødvendige event.code-verdien uten å måtte huske numeriske koder fra IE6-tiden.