Wednesday, November 14, 2007

MS AJAX Sys.UI.DomEvent documentation missing keyCode property

If you've ever reviewed the JavaScript source code for some MS AJAX-based components like the AJAX Control Toolkit, you might have noticed the use of the Sys.UI.DomEvent.keyCode property in a number of places to handle keyboard input in controls.  I had recalled that there was also a charCode property on the same class, so interested in what the difference was, I headed over to http://asp.net/AJAX/Documentation/Live/ClientReference/Sys.UI/DomEventClass/default.aspx to take a look at the official documentation, but to my surprise, there was no keyCode property listed.

My initial reaction was that this was either an internal field or something that had been deprecated in the RTM, yet there are references to it in the target property too.  What I ultimately discovered is that this is a simple omission in the documentation.

Now back to why I was looking it up in the first place - what exactly is the difference between charCode and keyCode? Patrick Long has a blog entry at http://blogs.charteris.com/blogs/patl/archive/2007/07/04/keycodes-charcodes-and-asp-net-ajax.aspx that sums it all up nicely; charCode will return a value related to the character being pressed whereas keyCode is related to the key being pressed.  For example, 7 on the number pad and 7 on the QWERTY pad will return different keyCode values but the same charCode values.

No comments: