JQuery - 中英文數字計算及判斷是否目前為中文輸入狀態

JQuery - 中英文數字計算及判斷是否目前為中文輸入狀態

為了要做一個toolkit,

我要判斷他是否是正在中文輸入拼字狀態,與非拼字狀態,

及判斷中文輸入一字的時候,才做toolkit顯示,英文輸入三字的時候才顯示

我參考了兩個文字

通过js判断当前输入法是拼音还是英文输入法

http://www.sohu.com/a/159713394_99897596  

檢查輸入長度(中文及英文字數)

http://kevin0523.pixnet.net/blog/post/9496548-%E6%AA%A2%E6%9F%A5%E8%BC%B8%E5%85%A5%E9%95%B7%E5%BA%A6%28%E4%B8%AD%E6%96%87%E5%8F%8A%E8%8B%B1%E6%96%87%E5%AD%97%E6%95%B8%29

 

先判斷他是不是拼字狀態

var isPinyin = false;

$('.input_keyword').on('compositionstart',function(e){   
    isPinyin = true;
});

$('.input_keyword').on('compositionend',function(e){   
    isPinyin = false;
    showToolkit(this); 
});

 $('.input_keyword').on('input',function(e){ 
    if(!isPinyin) {
       showToolkit(this);  
    }
});

function showToolkit(source) {

}

在來檢查輸入字串是否足夠做查詢關鍵字

function getChineseLength(source) {
   var tmp="";
   tmp=$(source).val();
   tmp=tmp.replace(/[A-Za-z0-9]/g,"");
   tmp=tmp.replace(/[^\u0000-\u00ff]/g," a ");
   tmp=tmp.replace(/\s/g,"");
   return tmp.length;
}

function getEnglishLength(source) {
   var tmp="";
   tmp=$(source).val();
   tmp=tmp.replace(/[^\u0000-\u00ff]/g,"");
   return tmp.length;
}

function showToolkit(source){
   var cLen = getChineseLength(source);
   var eLen = getEnglishLength(source);

   if(!(eLen>=3 || cLen>=1)){
       return;
   }
}

這樣就能避免中文正在輸入拼音時卻送出了查詢。