Non-standard: This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

The UIEvent.which read-only property of the UIEvent interface returns a number that indicates which button was pressed on the mouse, or the numeric keyCode or the character code (charCode) of the key pressed on the keyboard.


Value for KeyboardEvent Non-Standard

For KeyboardEvent, event.which contains the numeric code for a particular key pressed, depending on whether an alphanumeric or non-alphanumeric key was pressed. Please see deprecated KeyboardEvent.charCode and KeyboardEvent.keyCode for more details.

Note: Consider KeyboardEvent.key or KeyboardEvent.code for new code.

Value for MouseEvent Non-Standard

For MouseEvent, event.which is a number representing a given button:

  • 0: No button
  • 1: Left button
  • 2: Middle button (if present)
  • 3: Right button

For a mouse configured for left-handed use, the button actions are reversed. In this case, the values are read from right to left.

Note: Consider MouseEvent.button for new code.


<title>charCode/keyCode/which example</title>

<script type="text/javascript">

function showKeyPress(evt) {
alert("onkeypress handler: \n"
      + "keyCode property: " + evt.keyCode + "\n"
      + "which property: " + evt.which + "\n"
      + "charCode property: " + evt.charCode + "\n"
      + "Character Key Pressed: "
      + String.fromCharCode(evt.charCode) + "\n"

function keyDown(evt) {
alert("onkeydown handler: \n"
      + "keyCode property: " + evt.keyCode + "\n"
      + "which property: " + evt.which + "\n"



<p>Please press any key.</p>



UI Events
# dom-uievent-which

Browser compatibility

BCD tables only load in the browser

See also