中文输入法不触发keyup解决方法setInterval/setTimeout

在某些情况下,需要使用keyup事件来监听键盘的输入以迅速作出回应。but打开输入法编辑中文情况下....


问题

开启输入法的情况下,各浏览器表现不一

解决方案

使用一个计时器,当输入框处于聚焦(focus)状态时,每10秒执行一次回调函数

var time = setInterval(function, 1000); && clearInterval(time);//function可以执行多次

var time = setTimeout(function, 1000); && clearTimeout(time);  //function只执行一次


最终解决

$('#filter').bind('focus',filter_time);

/*每秒监听输入*/

filter_time = function(){
    $(this).val('');/*清除数据*/
    var time = setInterval(filter_staff_from_exist, 1000);/*每1秒执行一次人员筛选,time是停止本方法的参数*/
    $(this).bind('blur',function(){
        clearInterval(time); /*停止setInterval*/
    });
};

/*筛选人员*/
filter_staff_from_exist = function(){
    var filter_str = $('#filter').val();
    $('.staff').each(function(key,group){
        num = 0;
        $(group).find('.staff_line').each(function(index,element){
            str = $(element).attr('title');
            if(str.indexOf(filter_str) < 0){
                $(element).css('display','none');
                $(element).find('input').addClass('hidden');
            }
            else{
                $(element).css('display','block');
                $(element).find('input').removeClass('hidden');
                num++;
            }
        });
        $(group).prev().find('.group_lable span').html('('+num+')');
    });    
}


你可能感兴趣的:(中文输入法不触发keyup解决方法setInterval/setTimeout)