input文本框實現輸入英文時自動觸發事件,輸入中文時要輸入完成後才觸發事件

需求: 

    英文(英文輸入法): 每輸入一個字母都觸發一次事件;

    中文(拼音輸入法): 輸入完成後才觸發事件,不是每打一個拼音就觸發

 實現:

$(function(){
    var flag = true;
    $('#dev_region_search').on('compositionstart',function(){
        flag = false;
    });
    $('#dev_region_search').on('compositionend',function(){
        flag = true;
    });
    $('#dev_region_search').on('input',function(){
        setTimeout(function(){
            if(flag){
            	searchRegion();
            }
        },0);
    });
});

思路:

compositionstart: 輸入開始時觸發

compositionend: 選擇字/詞完成輸入時觸發

而直接輸英文是不觸發compositionstart,compositionend事件的,所以開始的標識flag爲true纔會走後面的searchRegion()方法,

輸入中文的則結合compositionstart,compositionend來判斷輸入完成情況決定走不走後面的searchRegion()方法.

這裏加的延時setTimeout是因爲默認情況下input比compostionend先執行了,導致flag標識不準確.








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章