微信小程序 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

相关推荐
iPad协议个微协议12 小时前
微信自动回复从关键词到 AI:WechatApi 如何连接消息、模型和人工
微信·自动化·微信开发·wechatapi·个人微信号二次开发
高级程序源15 小时前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计
后端·python·mysql·小程序·django·flask·课程设计
微信ipad协议开发15 小时前
微信视频号自动化:内容发布与互动的 API 实现
运维·微信
StevenLdh16 小时前
第四期 · 云端同步与冲突仲裁:离线可写、多端一致的工程解法
java·微信小程序
微信ipad协议开发16 小时前
教培机构微信自动化:从招生引流到社群运维的完整链路
微信·机器人·自动化·教育电商
m0_4628038817 小时前
会议签到如何设置手写签名?从创建签到到导出签名 PDF 的完整流程
微信小程序
微信ipad协议开发18 小时前
保险代理人微信赋能:多号管理与客户跟进的自动化方案
微信·机器人
wechatbot88818 小时前
【极客互动】企业微信Spring Boot 调度 SearchContact开发自动添加外部联系人网关
汇编·微信·自动化·企业微信·rpa
zhangminghuan18 小时前
UniApp / 微信小程序实战拓展面试题|业务坑点、工程化、跨端踩坑(2026 前端进阶)
小程序
Kingexpand_com1 天前
企业车队运营痛点解析:传统人工模式如何实现数字化升级
小程序·app·软件开发·app定制开发·打车用车app·车队