如何用jquery识别键盘语言

How to identify what keyboard language is with jquery

本文关键字:键盘 语言 识别 jquery 何用      更新时间:2023-09-26

有什么方法可以识别键盘语言吗?我有一个简单的文本框。我想检查键盘语言。当用户点击文本框时,如果键盘语言与波斯语相反,用户无法键入任何内容,并显示错误:"更改您的键盘语言为波斯语",当键盘语言更改时,用户可以键入。

在我的解决方案中,我使用了两种不同的方法来检测英语和波斯语字符:

document.getElementById('a').addEventListener('keypress',function(e){
     if (isEnglish(e.charCode))
       console.log('English');
     else if(isPersian(e.key))
       console.log('Persian');
     else
       console.log('Others')
});
function isEnglish(charCode){
   return (charCode >= 97 && charCode <= 122) 
          || (charCode>=65 && charCode<=90);
}
function isPersian(key){
    var p = /^['u0600-'u06FF's]+$/;    
    return p.test(key) && key!=' ';
}
<input id="a" type="text"/>

我不认为这是可能的-无论如何,它可能不是你想要的(例如,Caps Lock仍然会输出英语)我建议在文本区域上放置一个keypress事件监听器,并根据"仅波斯语"正则表达式检查每个字母像这样(未经测试):

document.getElementById('a').addEventListener('keypress',function(e){
     if (e.charCode > 160) 
     console.log('persian');
     else
     console.log('english');
});
<input type="text" id="a"/>

如果你想匹配ZERO WIDTH SPACE,你也应该添加这个:

'u200B

var p = /^['u0600-'u06FF'u200B's]+$/;

显示更多字符,如" |«|»| ?|;|: |…参见Regex波斯语

使用jquery:

$("#selector").keyup(function (event) {
    var code = event.key.charCodeAt(0);
    if (isEnglish(code)) {
        alert("you typed in english");
        return;
    }
    else {
        alert("please type in english");
    }
});
function isEnglish(charCode) {
    return (charCode >= 97 && charCode <= 122)
        || (charCode >= 65 && charCode <= 90);
}

This:

function only_persian(str){
    var p = /^['u0600-'u06FF's]+$/;
  if (!p.test(str)) {
        alert("not format");
    }
}

或者你可以这样写:http://imanmh.github.io/persianRex/