【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官网

目录
相关文章
|
8月前
|
JavaScript
弹出窗(原生js)
弹出窗(原生js)
43 0
|
8月前
|
Web App开发 JavaScript Android开发
Vue 项目触发移动软键盘搜索点击事件
Vue 项目触发移动软键盘搜索点击事件
168 0
|
JavaScript 前端开发
vue 中使用防抖和节流,防止重复点击或重复上拉加载
vue 中使用防抖和节流,防止重复点击或重复上拉加载
|
JavaScript
vue的监听键盘事件的快捷方法
在我们的项目经常需要监听一些键盘事件来触发程序的执行,而Vue中允许在监听的时候添加关键修饰符: 对于一些常用键,还提供了按键别名: 全部的按键别名:  .enter  .tab  .delete (捕获“删除”和“退格”键)  .esc  .space  .up  .down  .left  .right 修饰键:  .ctrl  .alt  .shift  .meta Do something 与按键别名不同的是,修饰键和 keyup 事件一起用时,事件引发时必须按下正常的按键。
2837 0
|
7月前
|
自然语言处理 JavaScript 前端开发
vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载
【6月更文挑战第4天】导文 vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载 文章重点 内容效果展示: 当div拉到底部的时候: 在这里插入图片描述 编辑器返回: 在这里插入图片描述 代码展示 在Vue 2中,可以通过监听div的scroll事件来判断滚动条是否到达了底部。以下是一个简单的示例:
146 2
|
5月前
|
JavaScript
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
本文介绍了如何在Vue2+ElementUI和Vue3+ElementPlus项目中对`el-notification`组件增加倒计时进度条特效,并实现鼠标移入通知时暂停计时,鼠标移出时继续计时的功能。
155 0
|
6月前
|
JavaScript 前端开发
vue动画——旋转动画(悬浮触发、点击触发)
vue动画——旋转动画(悬浮触发、点击触发)
261 1
|
8月前
|
前端开发 JavaScript
在React中,如何通过事件处理函数来管理输入框的获取和失去焦点行为?
【5月更文挑战第28天】在React中,如何通过事件处理函数来管理输入框的获取和失去焦点行为?
317 1
|
8月前
|
JavaScript
EasyUi下拉框选值时触发js事件。
EasyUi下拉框选值时触发js事件。