需求:
英文(英文輸入法): 每輸入一個字母都觸發一次事件;
中文(拼音輸入法): 輸入完成後才觸發事件,不是每打一個拼音就觸發
實現:
$(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標識不準確.