【问题标题】:Js check if key pressed is english i or turkish iJs检查按下的键是英语i还是土耳其语i
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 问题是我知道用户的键盘所在的语言环境。
  • 例如,如果用户写 din(随机示例)并且使用土耳其语,他希望看到 DİN,如果他使用英语,他希望看到 DIN
猜你喜欢
  • 1970-01-01
  • 2013-03-11
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多