You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Element UI搜索输入框交互优化:点击不弹窗,输入显示结果表格

解决点击Device ID输入框立即弹窗问题,实现输入后显示搜索结果表格

修改后模板代码

<el-input
  v-model="listQuery.searchMacTextValue"
  placeholder="Device ID"
  style="width: 200px"
  class="filter-item"
  @input="startSearch"
>
  <template #append>
    <el-button @click="triggerSearch">
      <i class="el-icon-search"></i> Search
    </el-button>
  </template>
</el-input>

<el-dialog
  v-model:visible="dialogVisible"
  title="Search Results"
  width="80%"
  @close="resetSearch"
>
  <el-table :data="searchResults" style="width: 100%">
    <el-table-column label="User Name" prop="userName"></el-table-column>
    <el-table-column label="Phone Number" prop="phoneNumber"></el-table-column>
    <el-table-column label="Email" prop="email"></el-table-column>
  </el-table>
</el-dialog>

修改后函数代码

startSearch() {
  // 只有输入内容不为空时才触发搜索并打开对话框
  if (this.listQuery.searchMacTextValue.trim()) {
    this.dialogVisible = true;
    // 替换为实际API调用,以下是模拟数据
    this.searchResults = [
      {
        userName: "John Doe",
        phoneNumber: "123-456-7890",
        email: "john@example.com",
      },
      {
        userName: "Jane Smith",
        phoneNumber: "987-654-3210",
        email: "jane@example.com",
      }
    ];
  } else {
    // 空输入时关闭对话框并清空结果
    this.resetSearch();
  }
},
triggerSearch() {
  // 点击搜索按钮手动触发搜索
  this.startSearch();
},
resetSearch() {
  this.listQuery.searchMacTextValue = "";
  this.searchResults = [];
  this.dialogVisible = false;
}

关键修改说明

  • 替换el-autocomplete为el-input:原组件自带下拉弹窗触发逻辑,改用普通输入框彻底消除点击输入框就弹窗的问题
  • 控制对话框显示时机:仅当输入框有非空内容时,才打开对话框展示搜索结果
  • 迁移表格到对话框内:把结果表格从下拉菜单移到对话框中,符合需求里的对话框展示要求
  • 补充按钮触发逻辑:保留搜索按钮功能,支持手动点击触发搜索
  • 完善重置逻辑:关闭对话框时自动清空输入内容和搜索结果,保证下次搜索的初始状态干净

内容的提问来源于stack exchange,提问作者Ali Haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:37:33