微信小程序 van-dropdown-menu

点击其他按钮,关闭van-dropdown-menu下拉框

在app.json或index.json中引入组件

html 复制代码
"usingComponents": {
  "van-dropdown-menu": "@vant/weapp/dropdown-menu/index",
  "van-dropdown-item": "@vant/weapp/dropdown-item/index"
}

页面使用

下面是完成的使用步骤

index.wxml

html 复制代码
<view class="seach-Main">
    <view class="class-main">
      <van-dropdown-menu 
      active-color="#FFD69A" 
      custom-class="menuMain" 
      >
        <van-dropdown-item
        title-class="ItemMain"
        value="{{ value1 }}" 
        options="{{ option1 }}"
        bind:change="onDropDownChange" 
        id="item"/>
      </van-dropdown-menu>
    </view>
    <van-search 
    class="search-text" 
    background="#000000" 
    value="{{ value }}" 
    placeholder="请输入产品编号/名称" 
    placeholder-style="font-size:28rpx;" 
    clearable="true" use-action-slot 
    left-icon="search" 
    bind:focus="onFocusClick" 
    bind:change="onChange" 
    bind:search="submitHandle">
      <view slot="action" bind:tap="submitHandle" style="color: #FFFFFF;">搜索</view>
    </van-search>
  </view>

index.scss

css 复制代码
  .seach-Main {
    display: flex;
    justify-content: space-around;
    width: 100%;
    align-items: center;
    position: relative;
    
    .search-text {
      width: 100%;
    }

    .search-image {
      display: flex;
      position: absolute;
      width: 44rpx;
      left: 40rpx;

      image {
        width: 44rpx;
        height: 44rpx;
      }

    }
  }

  .seach-Main .van-search__content--square {
    background-color: var(--bannerBgColor) !important;
    border-radius: 10rpx 10rpx 10rpx 10rpx;
    border: 2rpx solid var(--bannerBgColor);
  }

  .seach-Main .cell-index--van-cell__value {
    text-align: left;

  }

  .seach-Main .van-field__control {
    color: var(--titleColor);
  }

  .seach-Main .van-cell__left-icon-wrap {
    color: var(--titleColor) !important;
  }

  // 选择
  .class-main {
    .menuMain {
      background-color: var(--mainBgColor);
    }

    .ItemMain {
      color: var(--titleColor);
    }
  }

  .van-cell {
    background-color: var(--bannerBgColor) !important;
    color: var(--titleColor) !important;
    border: none;
  }

  /* 样式文件 */
  .class-main .van-cell::after {
    border: none;
  }

上面var()都是引用的公共样式,可以换成自己项目需要的样式。

index.ts(重点)

在这里,需要实现输入框选中时,van-dropdown-menu组件需要关闭。所以在输入框组件里增加了bind:focus="onFocusClick"方法。在这个方法里面实现关闭操作。

javascript 复制代码
// 输入框聚焦关闭组件
  onFocusClick() {
    this.selectComponent('#item').toggle(false);
  },

刚开始没注意官方文档的说明,现将该方法着重展示出来。

index.ts(全部)

javascript 复制代码
Page({

  /**
   * 页面的初始数据
   */
  data: {
    value1: '',
    option1: [
      { text: '全部', value: '' },
      { text: '干货', value: 'GH' },
      { text: '调味', value: 'TW' },
    ],
    groupType:'', // 分类
    searchField:'',// 输入框搜索内容
},
// 输入框聚焦关闭
  onFocusClick() {
    this.selectComponent('#item').toggle(false);
  },
  // 筛选
  onDropDownChange(e: any) {
    let index = e.detail
    if (index == 0 && this.data.value1 == 0) {
      index = ''
    }
    this.setData({
      'groupType': index,
    })
  },
  // 输入框值改变时的方法
 onChange(e: any) {
    this.setData({
      searchField: e.detail,
    });
    // 调用搜索接口
    
  },
  // 点击搜索按钮方法
 submitHandle() {
  this.selectComponent('#item').toggle(false); // 关闭弹框
    var vkey = this.data.value;
    if (vkey) {
    // 搜索关键字不为空时的操作
    
    } else {
    // 搜索关键字为空时的操作
  
    }
  },


)}

最终效果如下:

点击其他方法,关闭van-dropdown-menu

相关推荐
蓝帆傲亦16 小时前
支付宝小程序性能暴增秘籍:UniApp项目极限优化全攻略
小程序·uni-app
陈思杰系统思考Jason20 小时前
系统思考:业务创新与组织重构
百度·微信·微信公众平台·新浪微博·微信开放平台
羊群智妍20 小时前
2026AI搜索时代:9成企业遭AI“隐身”,教你精准破局
百度·微信·微信公众平台·facebook·新浪微博
CHU72903520 小时前
淘宝扭蛋机抽盒小程序前端功能解析:解锁趣味抽盒新体验
前端·小程序
2501_933907211 天前
深圳本凡科技专业企业APP开发,助力手机应用创新优化
科技·微信小程序·小程序
每天都要加油呀!1 天前
TypeError: uni.requestPayment is not a function
小程序
java1234_小锋1 天前
分享一套优质的微信小程序校园志愿者系统(SpringBoot后端+Vue3管理端)
微信小程序·小程序·校园志愿者
2501_916008891 天前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
打破砂锅问到底0071 天前
AI 驱动开发实战:10分钟从零构建「微信群相册」小程序
人工智能·微信·小程序·ai编程
CHU7290351 天前
扭蛋机盲盒小程序前端功能设计解析:打造趣味与惊喜并存的消费体验
前端·小程序