is there any way to identify the keyboard language? i have a simple textbox. that i want to check keyboard language. when the user click on textbox if the keyboard language was Contrary to Persian the user can't type anything and show the error:" change your keyboard language to persian" and when the keyboard language changed user can type.
I have used two different approaches for detecting English and Persian characters in my solution:
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"/>
I don't think that's possible - anyway it's probably not what you want (Caps Lock, for example, will still output English)
I'd recommend placing a keypress
event listener on your textarea and checking each letter against a "Persian only" regex
like this (untested):
document.getElementById('a').addEventListener('keypress',function(e){
if (e.charCode > 160)
console.log('persian');
else
console.log('english');
});
<input type="text" id="a"/>
If you want to match ZERO WIDTH SPACE you should add this too:
\u200B
So
var p = /^[\u0600-\u06FF\u200B\s]+$/;
for more characters like ” | « | » | ?| ; | : | ... see Regex Persian Language
using 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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With