How do I use the Keydown event to get the correct character in multiple languages/keyboard layouts?

javascript, jquery

Solution

To determine the actual character, you should use the keypress event instead of `keydown`. While `keydown` provides you with a key code, `keypress` indicates the character which was entered by the user.

Another difference is that when the user presses and holds a key, a `keydown` event is triggered only once, but separate `keypress` events are triggered for each inserted character.

Here's an example of using the `keypress` event:

<body>
<form>
  <input id="target" type="text" />
</form>

<script src="http://api.jquery.com/scripts/events.js"></script>
<script>
  $("#target").keypress(function(event) {
    var charCode = event.which; // charCode will contain the code of the character inputted
    var theChar = String.fromCharCode(charCode); // theChar will contain the actual character
  });
</script>
</body>

Problem

I use keydown event in jquery, but the problem it's stateless for input language. It's can't determine the input is in English language or in Hebrew or Arabic...? it returns only keycode, and I can't get character. Is there any solution??

Original source

Related problems