vue2中表格复合型输入框搜索功能

本文介绍了如何在ElementUI中使用el-input和el-select组件进行内容标题或人物标签的搜索,以及如何根据用户选择动态过滤数据并发送API请求到后台获取列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表格可以根据标题或者标签去查找
elementui官网参考:https://element.eleme.io/#/zh-CN/component/input

<el-input
          v-model="selectVideoName"
          class="videoName"
          placeholder="通过内容标题或人物标签搜索"
          prefix-icon="el-icon-search"
          :clearable="true"
          @keyup.enter.native="toFilterData"
          @keyup.esc.native="clearInput"
        >
          <el-select slot="prepend" v-model="selectSearchData" placeholder="请选择" class="ownSelect input-with-select" @change="searchSelect">
            <el-option label="内容标题" value="内容标题" />
            <el-option label="人物标签" value="人物标签" />
          </el-select>
        </el-input>

selectVideoName: '', // 搜索输入框输入的文本
selectSearchData: '内容标题', // 搜索下拉框的选择
// 获取列表
    getList(page) {
      this.tableData = []
      this.page = page || 1
      if (this.selectSearchData === '内容标题') {
        this.filterObj.articleName = this.selectVideoName
      } else {
        // 此处是命中标签的查找
        this.filterObj.personLabel = this.selectVideoName
      }
      this.axios.post('请求后台地址', {
        curPage: this.page,
        pageSize: this.pageSize,
        ...this.filterObj
      }).then(res => {
        if (res.code === 200) {
        }
      })
    },
// 搜索框前面的下拉选择框
    searchSelect(event) {
      if (event === '内容标题') {
        this.filterObj.personLabel = ''
      } else {
        this.filterObj.articleName = ''
      }
    }
Vue.js和TypeScript (TSX) 结合可以提供更好的类型安全性和组件化开发体验。对于创建复杂的输入框组件,你可以使用TSX语法,它允许你在.vue文件中编写类似JavaScript的表达式,并自动处理类型推断。 在Vue中创建一个复合型输入框组件,首先需要安装`@vue/babel-plugin-jsx`插件支持TSX转换。在你的项目`package.json`的`scripts`部分添加: ```json "build": "vue-tsc -p ./tsconfig.json && vite build" ``` 然后,在`.browserslistrc`中配置支持ESNext语法,例如: ```json { "targets": [ ">0.25%, not dead", "last 2 versions", "Firefox ESR", "not ie <= 11" ], "use": [ "@vue/babel-preset-jsx" ] } ``` 接下来,在你的`.vue`文件中,使用TSX语法定义一个复合型输入框组件,比如一个包含文本、日期选择器和下拉选项的组件: ```tsx <template> <div> <input v-model="value.text" type="text" placeholder="Text Input"> <v-date-picker :value="value.date" /> <select v-model="value.dropdown"> <option v-for="(option, index) in options" :key="index">{{ option.label }}</option> </select> </div> </template> <script lang="ts"> import { Component, Prop } from 'vue'; import VDatePicker from 'vite-plugin-vue/vite-plugin-vue/components/VDatePicker.vue'; export default { components: { VDatePicker, }, data() { return { value: { text: '', date: null, dropdown: '', // 假设options是一个数组,包含label和value的对象 }, options: [ { label: 'Option 1', value: 'option1' }, { label: 'Option 2', value: 'option2' }, ], }; }, }; </script> ``` 在这个例子中,我们使用了`v-model`指令将用户输入绑定到组件的数据属性上,`v-date-picker`是来自Vite Vue Plugin的一个日期选择器组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值