目标:
使用 javascript/jquery 将用户类型的字符大写(大写)。
为此,我们使用 $('#input').keypress(...)
问题:
在英语中,字母i
应大写为I
。
在土耳其语中,字母 i
应大写为 і
。
如果我们从 .keypress()
获取输入字符,我们会得到与输入的字符相对应的代码,但我们不知道它是否是英文 i
(变成 I
)或土耳其语 i
(变成 і
)。
如果我们从 .keydown()
获取输入字符,我们会得到与按下的键相对应的代码,但我们无法获取字符代码(它是 0)来确定按下的字符是否是英语 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 - 明确提到了土耳其语!
关于javascript - JS 检查按下的按键是英语 i 还是土耳其语 i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664967/