el-select下拉菜单如何可以手输入内容

<el-select v-model="form.region" placeholder="请选择活动区域"> <el-option label="区域一" value="shanghai"></el-option> <el-option label="区域二" value="beijing"></el-option> </el-select>下拉菜单如何可以手输入内容并且根据输入的内容对应显示下拉内容

复制代码
<template>
  <div style="padding: 20px;">
    <!-- 带输入过滤的下拉选择框 -->
    <el-select
      v-model="form.region"
      placeholder="请选择活动区域/手动输入搜索"
      filterable          <!-- 开启输入过滤功能 -->
      :filter-method="filterRegion"  <!-- 自定义过滤方法 -->
      clearable           <!-- 可选:增加清空按钮 -->
      style="width: 300px;"
    >
      <el-option
        v-for="item in regionOptions"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      ></el-option>
    </el-select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        region: ''  // 绑定的选中值
      },
      // 下拉选项数据源(建议抽离,便于维护)
      regionOptions: [
        { label: '区域一', value: 'shanghai' },
        { label: '区域二', value: 'beijing' },
        // 可扩展更多选项
        { label: '区域三', value: 'guangzhou' },
        { label: '区域四', value: 'shenzhen' }
      ]
    };
  },
  methods: {
    // 自定义过滤方法:val 是输入框的实时输入内容
    filterRegion(val) {
      // 如果输入为空,显示所有选项
      if (!val) return true;
      // 过滤逻辑:匹配 label(中文名称)或 value(值),不区分大小写
      return this.regionOptions.filter(item => {
        return item.label.toLowerCase().includes(val.toLowerCase()) 
            || item.value.toLowerCase().includes(val.toLowerCase());
      });
    }
  }
};
</script>

关键注意点

  1. filterable 是基础,开启后才会显示输入框;
  2. 自定义 filter-method 时,参数是输入框的实时值,需返回布尔值(或过滤后的数组);
  3. 若需要纯输入(不限制下拉选项),可结合 allow-create 属性(Element Plus 支持,Element UI 需自定义);
  4. 远程搜索时,建议增加输入防抖(比如延迟 300ms 再请求接口),避免频繁请求。

这样就能实现「手动输入内容 + 根据输入过滤下拉选项」的核心需求了。

相关推荐
cd_949217217 分钟前
2026年朝阳永续AI小二专业研投能力解析
前端·人工智能·easyui
FlyWIHTSKY8 分钟前
`nth-child()`的 基础用法
前端·html
计算机学姐16 分钟前
基于微信小程序的宠物服务系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·微信小程序·uni-app·宠物
Ww.xh19 分钟前
Figma设计稿转React代码:ClaudeCode+MCP实战教程
前端·react.js·figma
钱端工程师20 分钟前
vue自定义一个在线查看文件的组件(.xlsx、.docx、.pdf、图片等)
javascript·vue.js·pdf
不老刘28 分钟前
破局 EMR 痛点:如何化解“护理记录跨页”与“A4物理打印”的架构冲突
前端·架构
m0_7381207233 分钟前
后渗透维权提权基础——CTF模拟红队进行权限维持(一)
服务器·前端·python·安全·web安全·php
朝阳3935 分钟前
react【实战】自定义下拉框、单选、多选、输入框
前端·javascript·react.js
涵涵(互关)38 分钟前
GoView各项目文件中的相关语法3
前端·vue.js·typescript
李白的天不白38 分钟前
vs code -- uniapp gets
前端