Reputation: 1785
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.
Upvotes: 8
Views: 5042
Reputation: 1563
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);
}
Upvotes: 1
Reputation: 3490
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"/>
Upvotes: 15
Reputation: 1370
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
Upvotes: 1
Reputation: 1806
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"/>
Upvotes: 2
Reputation: 1878
This:
function only_persian(str){
var p = /^[\u0600-\u06FF\s]+$/;
if (!p.test(str)) {
alert("not format");
}
}
or you can use this: http://imanmh.github.io/persianRex/
Upvotes: 0