微信小程序输入框---模糊搜索

html 复制代码
	<view class="starTime" style="margin: 40rpx 0;">
	  <text style="	width:160rpx;" >车牌号码:</text>
	 <view class="section" style="display: flex;align-items: center; position: relative;">
	   <input 
	     type="text" 
	     style="margin-left: 40rpx;font-size: 33rpx;"
	     class="weui-search-bar__input flex1 mar-l" 
	     placeholder="请输入车牌号码" 
	     value="{{inputVal}}" 
	     bindinput="inputTyping" 
	     bindfocus="showDropdown"
	     bindblur="hideDropdown"
	   />
	   
	   <!-- 下拉选择框 -->
	   <view class="dropdown" wx:if="{{showDropdown && carList.length > 0}}">
	     <view class="dropdown-item" wx:for="{{carList}}" wx:key="index" bindtap="selectCar"   data-label="{{item.label}}" data-plateber="{{item.plateNumber}}">
	       {{item.label}} <!-- 假设车牌字段是licensePlate,根据实际接口调整 -->
	     </view>
	   </view>
	 </view>
	 <image  class="module-icon" src="https:el.png"   bindtap="clearInput"></image>
	  </view>

css

html 复制代码
Page({
  data: {
    inputVal: '',
    carList: [], // 存储车牌列表
    showDropdown: false, // 控制下拉框显示
    routeId: '', // 假设已有此数据
    timer: null // 防抖计时器
  },

  // 输入事件处理
  inputTyping(e) {
    const value = e.detail.value
    this.setData({
      inputVal: value
    })

    // 防抖处理:输入停止300ms后再调用接口
    if (this.data.timer) {
      clearTimeout(this.data.timer)
    }
    this.data.timer = setTimeout(() => {
      if (value.trim()) { // 有输入内容才调用接口
        this.getQueryVehicleList4shift()
      } else {
        // 清空输入时清空列表
        this.setData({
          carList: []
        })
      }
    }, 300)
  },

  // 显示下拉框
  showDropdown() {
    if (this.data.carList.length > 0) {
      this.setData({
        showDropdown: true
      })
    }
  },

  // 隐藏下拉框(延迟执行,避免选择时立即隐藏)
  hideDropdown() {
    setTimeout(() => {
      this.setData({
        showDropdown: false
      })
    }, 200)
  },

  // 选择车牌
  selectCar(e) {
    const selected = e.currentTarget.dataset.item
    this.setData({
      inputVal: selected.licensePlate, // 显示选中的车牌
      showDropdown: false // 选中后隐藏下拉框
    })
    // 可以在这里添加选择后的其他逻辑
  },

  // 调用模糊搜索接口
  getQueryVehicleList4shift() {
    requestApi.get('system/vehicle/queryVehicleList4shift', {
      fleetId: wx.getStorageSync('information').fleetId,
      routeId: this.data.routeId,
      sf: this.data.inputVal // 搜索关键词
    }).then(res => {
      let carList = res.data || []
      console.log('车牌列表:', carList)
      this.setData({
        carList: carList,
        showDropdown: carList.length > 0 // 有数据时显示下拉框
      })
    }).catch(err => {
      console.error('接口调用失败:', err)
      this.setData({
        carList: []
      })
    })
  }
})
javascript 复制代码
Page({
  data: {
    inputVal: '',
    carList: [], // 存储车牌列表
    showDropdown: false, // 控制下拉框显示
    routeId: '', // 假设已有此数据
    timer: null // 防抖计时器
  },

  // 输入事件处理
  inputTyping(e) {
    const value = e.detail.value
    this.setData({
      inputVal: value
    })

    // 防抖处理:输入停止300ms后再调用接口
    if (this.data.timer) {
      clearTimeout(this.data.timer)
    }
    this.data.timer = setTimeout(() => {
      if (value.trim()) { // 有输入内容才调用接口
        this.getQueryVehicleList4shift()
      } else {
        // 清空输入时清空列表
        this.setData({
          carList: []
        })
      }
    }, 300)
  },

  // 显示下拉框
  showDropdown() {
    if (this.data.carList.length > 0) {
      this.setData({
        showDropdown: true
      })
    }
  },

  // 隐藏下拉框(延迟执行,避免选择时立即隐藏)
  hideDropdown() {
    setTimeout(() => {
      this.setData({
        showDropdown: false
      })
    }, 200)
  },

  // 选择车牌
  selectCar(e) {
    const selected = e.currentTarget.dataset.item
    this.setData({
      inputVal: selected.licensePlate, // 显示选中的车牌
      showDropdown: false // 选中后隐藏下拉框
    })
    // 可以在这里添加选择后的其他逻辑
  },

  // 调用模糊搜索接口
  getQueryVehicleList4shift() {
    requestApi.get('syst4/shift', {
      fleetId: wx.getStorageSync('information').fleetId,
      routeId: this.data.routeId,
      sf: this.data.inputVal // 搜索关键词
    }).then(res => {
      let carList = res.data || []
      console.log('车牌列表:', carList)
      this.setData({
        carList: carList,
        showDropdown: carList.length > 0 // 有数据时显示下拉框
      })
    }).catch(err => {
      console.error('接口调用失败:', err)
      this.setData({
        carList: []
      })
    })
  }
})
相关推荐
vx_dmxq21127 分钟前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
蹦极的考拉38 分钟前
夜间无法登录:ThinkPHP api接口 23:00 准时罢工的排查全纪录
小程序·thinkphp·api接口·无法登陆
vx_vxbs662 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
我命由我123454 小时前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
G佳伟9 小时前
‌微信小程序Webview转发页面空白问题解决方案‌
微信小程序·小程序
vx_vxbs6611 小时前
【SSM电动车智能充电服务平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·spring cloud·小程序·php·idea
小皮虾12 小时前
告别服务器!小程序纯前端“图片转 PDF”工具,隐私安全又高效
前端·javascript·微信小程序
低代码布道师13 小时前
医疗小程序12出诊列表
低代码·小程序
Coder-coco14 小时前
游戏助手|游戏攻略|基于SprinBoot+vue的游戏攻略系统小程序(源码+数据库+文档)
java·vue.js·spring boot·游戏·小程序·论文·游戏助手
小小王app小程序开发1 天前
盲盒小程序一番赏衍生玩法:魔王赏、非酋赏、狂欢赏差异化分析
小程序