目标:
使用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-明确提到土耳其语!