微信小程序input搜索解决中文问题(输入拼音) & 实时搜索节流处理(bindinput 节流)

微信小程序input搜索解决中文问题(输入拼音) & 实时搜索节流处理(bindinput 节流)

问题

微信小程序输入拼音的时候, 还没有完全输入完成, bindinput就会触发, 当我输入"ni’hao", 还没有选定汉字"你好", 就已经触发了, 我想改成当选定"你好"后再触发

解决方案

bindinput 的detail中有一个 cursor 的属性,返回光标位置,可以根据 此次输入时的cursor对比上一次的cursor 来判断, 键盘输入时触发,event.detail = {value, cursor, keyCode}
Page({
/**
* 页面的初始数据
*/
	data: {
		searchValue: '',
		cursor: 0
	},
	
	 inputOnchange: function(e) {
    if(e.detail.cursor != this.data.cursor) {
      this.setData({
        cursor: e.detail.cursor,
        searchValue: e.detail.value
      })
      console.log('确定输入内容' + this.data.searchValue)
      // 假设现在需要检测到用户输入的值,用户 500 毫秒内没有继续输入就将该值打印出来
      this.throttle(this.queryData, null, 500, this.data.searchValue);
    } else {
      console.log('输入拼音名没有确定输入内容, 不搜索')
    }
  },

  // 节流
  throttle: function (fn, context, delay, text) {
    clearTimeout(fn.timeoutId);
    fn.timeoutId = setTimeout(function () {
      fn.call(context, text);
    }, delay);
  },
  
  // 此处方法里面调用查询接口
  queryData: function (e) {
    console.log(e) // 打印 用户输入的值
    // 
    // TODO 此处请求接口
    //
  },
})

WXML

<input 
	class='search_input'
    maxlength='35'
    placeholder="输入关键词搜索"
	bindinput='inputOnchange'
	value='{{searchValue}}'
	bindconfirm='searchBtnClick'
    confirm-type='search'
   />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值