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标识不准确.








你可能感兴趣的:(jquery)