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

在处理keyup事件监听键盘输入时,遇到开启输入法导致事件未触发的浏览器兼容性问题。针对此问题,提出了一个解决方案:利用setInterval和clearTimeout,在输入框聚焦状态下每隔10秒执行回调函数,确保在中文输入法环境下也能响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在某些情况下,需要使用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+')');
    });    
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值