使用JavaScript更改键盘布局

17

我有一个HTML表单,用户可以使用英语和波斯语填写该表单。但是我有一个验证码输入框,用户必须使用英语填写。

如果用户的键盘布局为波斯语,则在此字段中输入的内容应更改为英语,因此我需要一些代码来在聚焦于此输入文本时更改键盘布局。

是否可能使用JavaScript更改键盘布局?


2
是的,你可以捕获每个按键并检查 e.which,然后将字符替换为与你所针对的新键盘布局相对应的字符。 - Andreas Wong
您无法通过 JavaScript 检测/更改键盘布局。 - Ramesh
我有一个大问题,Windows和Linux中有一些不同的波斯键盘布局,这使字符替换变得复杂。 :( - hd.
1
我很好奇:波斯语用户通常如何处理使用验证码的英语网站?我认为这取决于个人用户需要随时切换(在Windows中,可以通过显示在任务栏侧面的语言栏轻松完成此操作)。 - nnnnnn
他们按Alt+Shift键将系统键盘布局更改为英语,然后输入验证码,但我想通过脚本而不是手动进行此切换! - hd.
2个回答

13

你无法使用JS更改键盘布局,但你可以捕获keydown事件并替换字符,方法类似于下面的示例:

http://jsfiddle.net/SxdKZ/

$('textarea').on('keydown', function(e){

   console.log(e.keyCode); 
    if( e.keyCode == 90 ){
      e.preventDefault();
      $(this).append('y').focus();
    }
    if( e.keyCode == 89 ){
      e.preventDefault();
      $(this).append('z').focus();
    }

});​

谢谢你,但是在Windows和Linux中有一些不同的波斯键盘布局,因此键码在Windows和Linux中并不相同,不能像你的代码那样轻松地替换它们 :( - hd.
2
嗯...你可以使用navigator.platform来检测操作系统 :) 如果只是为了捕捉,像http://mottie.github.com/Keyboard/这样的东西可能是一个更简单的解决方案? - gherkins
e.keyCode现在已经弃用。其他KeyboardEvent属性,例如KeyboardEvent.code已经替代了它。请查看此链接获取更多信息。 - BarryCap

3

我已将所有输入文本字段的默认语言设置为阿拉伯语。如果您想在任何文本字段中使用英语语言,您需要将“en”类分配给该特定文本字段。

只需复制以下代码,并从http://farsitype.ir/FarsiType.js下载js文件即可。

/******** Make all the input text fields arabic ******/
$('input[type=text]').each(function(index, value){
 if (value.className != 'en') {
  $(this).attr('Lang','fa');
 }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接