目标:

使用javascript / jquery时,将as用户类型的字符大写(大写)。
为此,我们使用$('#input').keypress(...)

问题:

用英语,字母i应大写为I

在土耳其语中,字母i应大写为İ

如果从.keypress()获取输入字符,则会得到与输入的字符相对应的代码,但我们不知道其是英语的i(成为I)还是土耳其语的i(成为İ) 。

如果从.keydown()获取输入字符,则会得到与按下的键相对应的代码,但是我们无法获取char代码(它为0)来确定所按下的char是否为英语i(成为İ)或土耳其语ı(成为I

解决方案:

因此,作为一种解决方法,我们认为同时使用keydown()keypress()事件,并且由于keydown()首先出现,所以用keydown()代码更新了全局变量,我们在keypress()上进行了检查,以同时获取键和字符,以便可以算出要显示的字符。

编辑:这仅适用于Chrome!

问题:

这是可行的跨平台解决方案吗?我们是否保证keydown()永远是第一位?是否有更好,更简单的解决方案来解决此问题?

编辑

我上面提到的解决方案仅适用于chrome,firefox,英语i和土耳其语'键(均打印i)返回的按键代码相同(73)。仅chrome返回土耳其语'的正确代码(222)。

那么,任何适用于所有浏览器的解决方案?

最佳答案

toLocaleUpperCase()方法不是您想要的吗? http://www.w3schools.com/jsref/jsref_tolocaleuppercase.asp-明确提到土耳其语!

09-25 20:02