input搜索框实时检索功能实现(亲测有效,超级好用)

一:目前监听input输入框有三种方法:

第一种是onchange事件,触发条件:内容改变且失去焦点。
第二种是onpropertychange事件,触发条件:元素内容改变即触发,另外js改变内容,该元素的属性改变也会触发。但只在IE11以下支持。
第三种是html5的oninput事件,触发条件:value值的改变,但是js方式改变value不会触发,且在IE8以上及其他标准浏览器支持。

二:采用最简单的html5的oninput事件,onchange事件触发条件无法达到理想的输入即检索,onpropertychange对浏览器的支持力度太低。

三:由于oninput事件是输入即触发,这会导致出现输入汉字时出发次数过多,即使在拼写的时候也会触发,影响用户体验和后台交互,所以利用compositionstart和compositionend来处理。

原理:

当浏览器有非直接的文字输入时,compositionstart事件就会同步触发,记住,是同步;

当浏览器是直接的文字输入时,compositionend事件就会触发。

所以:

    var cpLock = false;
    $('input[search]').on('compositionstart', function () {
        // 输入汉语拼音时锁住搜索框,不进行搜索,或者从汉语拼音转到字母时也可触发
        cpLock = true;
        console.log('不搜索')
    });
    $('input[search]').on('compositionend', function () {
        // 结束汉语拼音输入并生成汉字时,解锁搜索框,进行搜索
        cpLock = false;
        console.log('汉字搜索');
        // 接下去放ajax请求生成下拉框内容
    });
    $('input[search]').on('input', function () {
        if (!cpLock) {
            console.log('字母搜索')    
          // 接下去放ajax请求生成下拉框内容
      }
  });
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值