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

相关推荐
sheji341617 分钟前
【开题答辩全过程】以 舞蹈培训管理微信小程序的设计与实现为例,包含答辩的问题和答案
微信小程序·小程序
00后程序员张22 分钟前
iOS开发者工具有哪些?Xcode、AppUploader(开心上架)、Fastlane如何使用
android·macos·ios·小程序·uni-app·iphone·xcode
焦糖玛奇朵婷39 分钟前
盲盒抽卡机小程序搭建,探索卡牌市场
大数据·开发语言·程序人生·小程序·软件需求
白菜__44 分钟前
阿里V2滑块小程序版本
javascript·爬虫·网络协议·小程序·node.js
灵机一物1 小时前
灵机一物AI智能电商小程序(已上线)-从“帮我买抽纸”到自动下单支付——大模型驱动全链路自动购物系统实战
人工智能·python·elasticsearch·小程序·fastapi·rag·langgraph
CHU7290351 小时前
便捷省心!手机数码租赁小程序前端功能玩法详解
智能手机·小程序
云起SAAS15 小时前
B2B 木材行业供需对接平台微信小程序开源
微信小程序·小程序·ai编程·看广告变现轻·b2b 木材行业供需对接平台
程序媛徐师姐17 小时前
Java基于微信小程序的球馆预约系统,附源码+文档说明
java·微信小程序·球馆预约系统小程序·jav球馆预约系统小程序·java球馆预约微信小程序·球馆预约微信小程序·java球馆预约系统
毕设源码-邱学长17 小时前
【开题答辩全过程】以 基于微信小程序地方小吃分享平台设计与实现为例,包含答辩的问题和答案
微信小程序·小程序