vue 使用 el-table 添加搜索框 实现简单搜索功能 ,同时判断输入是否为空

前言:

vue 项目 使用 el-table ,想给 表格上方添加搜索功能 ,虽然 element 官方文档 自带类似的搜索框

我这里没有 使用官方文档的方法 ,我是通过使用两个操作数组的方法来实现搜索功能的

实现代码:

通过  @keyup.enter.native="xxx"  给输入框定义 搜索 函数(这里是按下回车才触发函数)

          <el-input
               v-model="searchText"
              placeholder="请输入文章标题按下回车进行搜索"
              style="width:300px;float:right"
              size="small"
               @keyup.enter.native="search"
          ></el-input>

  输入框通过 v-model 与 数据双向绑定 ,再传入函数中 做判断


表格渲染的数据是通过 axios 请求保存在数组中 ,我先 定义变量拿到数组的长度 ,然后遍历数组

          // 数组长度
            const length = this.AccountData.length
          for(var i = 0 ; i < length ; i++){
            // console.log(this.AccountData[i])
            if( this.AccountData[0].ArticleTitle.includes(this.searchText)){
              //   下标为零表示 从 数组的新的第一个 判断 ,因为每次都把第一个删除
              this.AccountData.push(this.AccountData[0])
              this.AccountData.shift()     
            }else{
              this.AccountData.shift()   
            }
          }

每次循环都是取下标为  的元素判断 是否 带有输入框输入的数据

然后通过两个方法 :  push 和 shift 

每次满足条件的添加(push)到数组尾部 , 然后 每次循环都把数组首个元素删除(shift) ,以此类推 ,由于循环次数是 数组的长度 ,所以每个元素都会循环一次 ,这种方法符合机器思想

判断是否为空

使用 正则表达式 对输入内容进行检测,判断 是否为空 (空格或者无输入)

// 通过正则验证输入 是否为空
    check(string){
      var content = string
      if(content.replace(/(^\s*)|(\s*$)/g, "") == '')
      return true
    }

 完整代码

  // 搜索  
     search(){
        if(this.check(this.searchText)){
          this.$message({
            type:'error',
            message:'输入为空',
            duration:1000,
            offset:200
          })
            // 这个 是我放在 create()中 的请求数据的函数
          this.GetDetails()       
        }else{
           const length = this.AccountData.length
          for(var i = 0 ; i < length ; i++){
            // console.log(this.AccountData[i])
            // 文章标题  title
            if( this.AccountData[0].ArticleTitle.includes(this.searchText)){
              //  文章总结 测试 代码逻辑性 通过
            //  if( this.AccountData[0].ArticleSummary.includes(this.searchText)){
              // console.log(this.AccountData[i])
              //   下标为零表示 从 数组的新的第一个 判断 ,因为每次都把第一个删除
              this.AccountData.push(this.AccountData[0])
              this.AccountData.shift()     
            }else{
              this.AccountData.shift()   
            }
          }
        }
       
    },
    // 通过正则验证输入 是否为空
    check(string){
      var content = string
      if(content.replace(/(^\s*)|(\s*$)/g, "") == '')
      return true
    }

注意问题

在我 最开始 实现 上面代码的时候因为逻辑问题出现过错误 , 另一篇文章

1.我的代码是 直接操作原数组 ,是因为 数据量比较少 ,大家在进行这样的操作可以定义一个新数组拷贝全部的数据进行操作,这样会方便后期的 维护和改错 

2. 上面是搜索功能 是通过 键盘按下回车触发函数 (keyup.enter.native="xxx" ),这里可以根据自己的需求进行更改,比如 键盘按下就自动触发 等等。。。


文章如有错误,恳请大家提出问题,本人不胜感激 。 不懂的地方可以评论,我都会一一回复

文章对大家有帮助的话,希望大家能动手点赞鼓励,大家未来一起努力     长路漫漫,道阻且长

  转载请注明出处:https://blog.csdn.net/qq_52855464/article/details/125344962

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在 Vue使用 `el-table` 添加搜索框实现简单搜索功能,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装并引入了 Element UI 库,以便使用 `el-table` 和其他组件。 2. 在 Vue 组件中,定义一个数据属性 `searchText` 用于存储搜索框中的文本输入。 3. 在 `el-table` 中的表头部分,添加一个额外的列用于放置搜索框组件。 4. 在搜索框组件中,使用 `v-model` 绑定 `searchText` 属性,以便实时获取搜索框中的文本输入。 5. 在表格的数据源中,使用计算属性或方法来过滤符合搜索条件的数据。 6. 在搜索框的事件处理程序中,调用过滤数据的方法或更新计算属性,以实现数据的动态过滤。 下面是一个示例代码,演示了如何在 Vue添加搜索框实现简单搜索功能: ```vue <template> <div> <el-input v-model="searchText" placeholder="输入关键字搜索"></el-input> <el-table :data="filteredData"> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="年龄" prop="age"></el-table-column> <el-table-column label="邮箱" prop="email"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { searchText: '', tableData: [ { name: '张三', age: 25, email: 'zhangsan@example.com' }, { name: '李四', age: 30, email: 'lisi@example.com' }, { name: '王五', age: 28, email: 'wangwu@example.com' } ] }; }, computed: { filteredData() { if (!this.searchText) { return this.tableData; } const searchText = this.searchText.toLowerCase(); return this.tableData.filter(item => { return ( item.name.toLowerCase().includes(searchText) || item.email.toLowerCase().includes(searchText) ); }); } } }; </script> ``` 在上述代码中,我们在 `el-input` 组件中使用 `v-model` 绑定了 `searchText` 属性,用于实时获取搜索框中的文本输入。然后,我们在 `el-table` 的表头部分添加了一个额外的列,用于放置搜索框组件。 在数据源中,我们使用了一个名为 `tableData` 的数组来存储表格的数据。我们使用计算属性 `filteredData` 来过滤符合搜索条件的数据。如果 `searchText` 为空,则返回所有数据;否则,我们将搜索框中的文本转换为小写并与每一项的姓名和邮箱进行比较,返回包含搜索文本的数据项。 这样,当你在搜索框输入关键字时,表格将根据输入进行动态过滤,并只显示符合条件的数据项。 请注意,在实际项目中,你可能需要从后端获取数据并进行搜索,这里的示例代码只是一个简单的演示。你可以根据自己的需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潮汐未见潮落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值