admin管理员组文章数量:1405393
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??
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??
Share Improve this question edited Oct 22, 2019 at 15:24 Liam 29.8k28 gold badges139 silver badges203 bronze badges asked Apr 11, 2012 at 16:30 assaqqafassaqqaf 1,5854 gold badges22 silver badges39 bronze badges 2- There's a jQuery plugin to determine a browser's language setting. See this SO thread. Then you can figure out the keyboard code for the character you want in each langauge. – Belladonna Commented Apr 11, 2012 at 17:04
- I think the plugin is not solve the problem. the user can change language during typing. so, i cannt get the right char input by user. – assaqqaf Commented Apr 11, 2012 at 19:29
2 Answers
Reset to default 7 +50To 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./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>
Dmytro's approach is currently considered deprecated, as indicated in the official Mozilla documentation (https://developer.mozilla/en-US/docs/Web/API/UIEvent/which). Unfortunately, relying on it may not be the best choice.
A more modern and remended approach is to utilize the event.code
method to achieve the same result, specifically capturing the "KeyM" key press:
body.addEventListener("keydown", (e) => {
if (e.code === "KeyM") {
// The 'M' key has been pressed
}
})
By embracing this method, you ensure patibility and adhere to the latest best practices in web development.
本文标签:
版权声明:本文标题:javascript - How do I use the Keydown event to get the correct character in multiple languageskeyboard layouts? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744277724a2598496.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论