VantUI下拉搜索框实现方法、输入搜索框方法(基于Vue)

在Vue前端开发中,常用的ElementUI是有下拉搜索框的,便于搜索查找一些较多数据的内容

但是移动端VantUI默认是没有这个搜索框的

于是我简单的做了一个适配移动端的下拉搜索框,效果如下:

通过弹出的选择框加上搜索功能即可,附上主要实现代码

**HTML**

<div id="root">
            <h2>VantUI下拉搜索功能</h2>
            <van-field label="所属部门" readonly clickable required placeholder="点击选择所在部门" @click="showPicker=true" :value="value"></van-field>
            <van-popup v-model="showPicker" position="bottom">
                <!-- v-model.trim 对关键字进行去空处理 @input 输入框自身属性,对输入的值进行实时检测 -->
                <van-field clickable v-model.trim="keyvalue" left-icon="search" placeholder="搜索所在部门" @input="search"></van-field>
                <van-picker show-toolbar :columns="filterdepartments" @confirm="onConfirm" @cancel="showPicker=false"> </van-picker>
            </van-popup>
</div>

**JS**

new Vue({
    el: "#root",
    mounted() {
        //  挂载时,将原数组给到需要过滤的数组
        this.filterdepartments = this.departments;
    },
    data() {
        return {
            // 下拉框选择的值
            value: "",
            // 搜索框的关键字
            keyvalue: "",
            // 过滤数组
            filterdepartments: null,
            // 原数组
            departments: [
                { text: "销售部", value: "XSB" },
                { text: "市场部", value: "SCB" },
                { text: "研发部", value: "YFB" },
                { text: "人力资源部", value: "RLZYB" },
                { text: "财务部", value: "CWB" },
                { text: "采购部", value: "CGB" },
                { text: "生产部", value: "SCB" },
                { text: "品质部", value: "PZB" },
                { text: "物流部", value: "WLB" },
            ],
            showPicker: false,
        };
    },
    methods: {
        // 输入框搜索方法
        search() {
            // 对过滤数组进行操作,返回符合条件的数组
            this.filterdepartments = this.departments.filter((params) => {
                return params.text.includes(this.keyvalue);
            });
        },
        // 弹窗方法
        onConfirm(value) {
            this.value = value.text;
            this.showPicker = false;
        },
    },
});

具体实现思路:

1.在弹出框<van-popup>中加上一个输入框<van-field>

2.通过此输入框绑定input方法,对用户输入的关键字进行过滤搜索

3.对搜索的结果进行动态展示

完整的demo案例放在下方链接中

 下拉搜索框完整文件

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装vant组件库:在项目中执行npm install vant@next安装vant组件,next是关键字,表示安装最新的vant组件。 2. 引入vant:在Vue组件中引入vant,以按钮为例 ``` <template> <van-button type='default' round icon='search' size='medium' @click='show'> 搜索 </van-button> <van-dropdown-menu :visible.sync='visible' > <van-dropdown-item> <van-field label='sousuo' placeholder='请输入搜索内容'></van-field> </van-dropdown-item> </van-dropdown-menu> </template> <script> import {ref} from 'vue' import {VanDropdownMenu, VanDropdownItem, VanField, VanButton} from 'vant' export default{ name: 'DropdownDemo', components: { VanDropdownMenu, VanDropdownItem, VanField, VanButton }, setup(){ const visible = ref(false); const show = ()=>{ visible.value = !visible.value; } return { visible, show } } } </script> ``` 3. 样式调整:后面还可以加上一些样式调整,例如边框色、背景色、菜单宽度等。示例如下: ``` <style> .van-dropdown-menu__dropdown { background-color: #fff; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1); border: 1px solid #cfcfcf; border-radius: 4px; width: 80vw; max-width: 600px; } .van-dropdown-menu__title { border: 1px solid #cfcfcf; background-color: #fff; color: #666; border-radius: 4px; } .van-field { background-color: #fafafa; border-color: #dcdfe6; border-radius: 1.2rem; font-family: sans-serif; font-size: 0.6rem; color: #000; height: 1.6rem; line-height: 1.6rem; padding: 0 0.5rem; margin: 0 2vw; } </style> ``` 这样就可以实现基于vue3使用vant下拉菜单实现搜索了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值