Idocs Guide to HTML

Checking Which Key Was Pressed

Before reading through this page, you might want to check out these solutions first:

onKeyPress allows you to check which key was pressed. With this useful information you can make decisions on whether or not to allow the key press event. Unfortunately, MSIE and Netscape pass along the key information in different ways. To get around that problem you can use a function which tests which method is used and retrieve the information accordingly. This getkey() function does just that:

<SCRIPT TYPE="text/javascript">
function getkey(e)
if (window.event)
   return window.event.keyCode;
else if (e)
   return e.which;
   return null;

In its simplest use, getkey() simply returns the numeric code for the key which was pressed. So, for example, you could display the code in the window status bar, a useful technique if you've forgotten which codes go with which keys.

<INPUT onKeyPress="window.status = getkey(event)">

This gives us this form:

type something:
Most of the time you'll want to use onKeyPress to restrict which characters can be typed in the field. To simplify the process of checking if the typed character is one of an acceptable group of characters we can use the following function. goodchars() uses getkey() so make sure you copy both of them into your page.

<SCRIPT TYPE="text/javascript">
function goodchars(e, goods)
var key, keychar;
key = getkey(e);
if (key == null) return true;

// get character
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
goods = goods.toLowerCase();

// check goodkeys
if (goods.indexOf(keychar) != -1)
	return true;

// control keys
if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;

// else return false
return false;

goodchars() takes two arguments: the event object and a string of acceptable characters. So, for example, we could allow only numbers in the field with code like this:

<INPUT NAME=INT onKeyPress="return goodchars(event,'0123456789')">

Which gives us this form:

Be sure to put the word return before the call to goodchars() or the event won't be cancelled if the user presses a wrong key. goodchars() is case-insensitive. If you allow "X" you also automatically allow "x". goodchars() allows the standard editing keys such as backspace and delete. Copyright 1997-2002 Idocs Inc. Content in this guide is offered freely to the public under the terms of the Open Content License and the Open Publication License. Contents may be redistributed or republished freely under these terms so long as credit to the original creator and contributors is maintained.