有没有办法识别键盘语言? 我有一个简单的文本框。我想检查键盘语言。当用户点击文本框时,如果键盘语言与波斯语相反,则用户无法键入任何内容并显示错误:"将键盘语言改为波斯语#34;当键盘语言改变时,用户可以输入。
答案 0 :(得分:7)
我在我的解决方案中使用了两种不同的方法来检测英语和波斯语字符:
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"/>
答案 1 :(得分:2)
我不认为这是可能的 - 无论如何它可能不是你想要的(例如,Caps Lock仍会输出英文)
我建议在你的textarea上放置一个keypress
事件监听器,并针对“仅限波斯语”的正则表达式检查每个字母
像这样(未经测试):
document.getElementById('a').addEventListener('keypress',function(e){
if (e.charCode > 160)
console.log('persian');
else
console.log('english');
});
<input type="text" id="a"/>
答案 2 :(得分:1)
如果你想匹配ZERO WIDTH SPACE,你也应该添加它:
\u200B
所以
var p = /^[\u0600-\u06FF\u200B\s]+$/;
更多字符,如“| «| »| ?| ; | :| ......见Regex Persian Language
答案 3 :(得分:0)
此:
function only_persian(str){
var p = /^[\u0600-\u06FF\s]+$/;
if (!p.test(str)) {
alert("not format");
}
}
或者你可以使用它:http://imanmh.github.io/persianRex/
答案 4 :(得分:0)
使用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);
}