需求:
英文(英文输入法): 每输入一个字母都触发一次事件;
中文(拼音输入法): 输入完成后才触发事件,不是每打一个拼音就触发
实现:
$(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标识不准确.