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:
else if (e)
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:
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.
getkey() so make sure you copy both of them into your page.
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)
// control keys
if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
// else 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.