【uniapp】搜索框防抖、自动获取焦点

简介: 【uniapp】搜索框防抖、自动获取焦点

1.搜索框基本UI结构

<view class="search-box">
  <!-- 使用 uni-ui 提供的搜索组件 -->
  <uni-search-bar @input="input" :radius="100" cancelButton="none"></uni-search-bar>
</view>

.search-box {
  //实现吸顶效果
  position: sticky;
  top: 0;
  //防止被后面的图片覆盖
  z-index: 999;
}

//input事件处理函数
methods: {
  input(e) {
    // e.value 是最新的搜索内容
    console.log(e.value)
  }
}

uni-search-bar官方教学:uni-
app官网

2.自动获取焦点

目的:实现跳转到本页面后光标立即定位到搜索框中

修改 components -> uni-search-bar -> uni-search-bar.vue 组件,把 data 数据中的 show
showSync 的值,从默认的 false 改为 true 即可:

3.防抖处理

问题:因为搜索框input函数只要输入便会记录输入值,但是很多情况下输入过程中的值并不是我们想要的,所以不需要读取

方案:设置延时器,规定时间内连续输入则input函数不会读取

在 data 中定义防抖的延时器 timerId 如下:

data() {
  return {
    // 延时器的 timerId
    timer: null,
    // 搜索关键词
    kw: ''
  }
}

修改 input 事件处理函数如下:

input(e) {
  // 清除 timer 对应的延时器
  clearTimeout(this.timer)
  // 重新启动一个延时器,并把 timerId 赋值给 this.timer
  this.timer = setTimeout(() => {
    // 如果 500 毫秒内,没有触发新的输入事件,则为搜索关键词赋值
    this.kw = e.value
    console.log(this.kw)
  }, 500)
}

注意:我们页面中使用了定时器,在离开这个页面的时候一定要记得清除,避免出现bug。

扩展:settimeout和setinterval之间有什么区别?

区别:setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完后即结束;而etinterval是一直循环运行下去,即每到设定时间间隔就触发指定代码,要想停止,需要使用clearInterval()函数。

定时器官方介绍:setTimeout(callback, delay, rest) | uni-
app官网

目录
相关文章
|
定位技术 开发者
uni-app获取地理位置
uni-app获取地理位置
1810 0
uniapp 实现加载效果,消息提示框,模态框
uniapp 实现加载效果,消息提示框,模态框
1076 0
|
移动开发 小程序 JavaScript
uniapp中uview组件库的Input 输入框 的使用方法
uniapp中uview组件库的Input 输入框 的使用方法
2637 0
uni-app监听页面滚动
uni-app监听页面滚动
1187 0
|
移动开发 小程序 测试技术
自定义多级联动选择器指南(uni-app)
在本文中,探讨了如何在uni-app中创建自定义多级联动选择器组件。这个组件具有强大的多端支持,可适用于H5、APP、微信小程序、支付宝小程序等多种平台。
1640 1
自定义多级联动选择器指南(uni-app)
|
存储 小程序 Java
【小程序分包】小程序包大于2M,来这教你分包啊
本文介绍了如何通过分包解决uniapp小程序包体积过大的问题。由于版本升级导致包体积超过2M,即使压缩静态资源也无法满足发布要求。文章详细讲解了分包的原因、步骤及注意事项,并提供了实操示例,帮助读者理解并实现小程序分包,从而减小主包大小
1464 2
【小程序分包】小程序包大于2M,来这教你分包啊
|
前端开发 JavaScript
vite vue3 config配置
【10月更文挑战第5天】
928 0
|
JavaScript
js中for of遍历数组获取index的方法
js中for of遍历数组获取index的方法
875 0
|
小程序 定位技术
uniapp 地图组件(map)的使用总结
uniapp 地图组件(map)的使用总结
1321 0
|
JSON Java UED
uniapp:使用DCloud的uni-push推送消息通知(在线模式)java实现
以上展示了使用Java结合DCloud的uni-push进行在线消息推送的基本步骤和实现方法。实际部署时,可能需要依据实际项目的规模,业务场景及用户基数进行必要的调整和优化,确保消息推送机制在保证用户体验的同时也满足业务需求。
2221 0

热门文章

最新文章

下一篇
开通oss服务