Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to identify what keyboard language is with jquery

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.

like image 747
inaz Avatar asked Oct 02 '16 12:10

inaz


4 Answers

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"/>
like image 188
n.y Avatar answered Oct 16 '22 11:10

n.y


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"/>
like image 40
Jameson the dog Avatar answered Oct 16 '22 11:10

Jameson the dog


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

like image 33
Kavian K. Avatar answered Oct 16 '22 11:10

Kavian K.


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);
}
like image 1
Hamid Avatar answered Oct 16 '22 11:10

Hamid