【发布时间】:2015-06-05 11:05:06
【问题描述】:
目标:
使用 javascript/jquery 将 as 用户类型的字符大写(大写)。
为此,我们使用$('#input').keypress(...)
问题:
英文字母i应大写为I。
在土耳其语中,字母 i 应大写为 İ。
如果我们从.keypress() 获取输入字符,我们会得到与输入的字符对应的代码,但我们不知道它是英文i(变成I)还是土耳其文i(变成@ 987654330@)。
如果我们从.keydown()获取输入字符,我们会得到与按下的键对应的代码,但我们无法获取字符代码(它是0)来确定按下的字符是否是英文i(变成@ 987654333@) 或土耳其语ı(变成I)
解决办法:
因此,作为一种解决方法,我们考虑同时使用keydown() 和keypress() 事件,因为keydown() 首先出现,使用keydown() 代码更新全局变量,我们检查keypress() 到获取 key 和 char 以便能够计算出要显示的 char。
编辑:这只适用于 chrome!
问题:
这是一个可行的跨平台解决方案吗?我们能保证keydown() 永远排在第一位吗?有没有更好、更简单的解决方案来解决这个问题?
编辑
我上面提到的解决方案仅适用于 chrome、firefox、从英语返回的按键代码 i 和土耳其语 ' 键(两者都打印 i)是相同的 (73)。只有 chrome 会为土耳其语 ' 返回正确的代码 (222)。
那么,任何适用于所有浏览器的解决方案?
【问题讨论】:
-
是的,事件的顺序是有保证的。
标签: javascript jquery internationalization