vue实现input输入模糊查询的三种方式


Posted in Vue.js onAugust 14, 2022

1 计算属性实现模糊查询

vue 中通过计算属性实现模糊查询,创建 html 文件,代码直接放入即可。

这里自己导入 vue,我是导入本地已经下载好的。

<script src="./lib/vue-2.6.12.js"></script>

演示:

打开默认显示全部

vue实现input输入模糊查询的三种方式

输入关键字模糊查询,名字和年龄都可以

vue实现input输入模糊查询的三种方式

完整代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>人员列表</h2>
      <input type="text" placeholder="请输入名字" v-model="keyWord">
      <table>
        <thead>
          <tr>
            <td>名字</td>
            <td>年龄</td>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item,i) in fillist" :key="i">
            <td>{{ item.name }}</td>
            <td>{{ item.age }}</td>
          </tr>
        </tbody>
      </table>
    </div>
​
    <script src="./lib/vue-2.6.12.js"></script>
​
    <script>
      const vm = new Vue({
        el: '#app',
        data: {
          keyWord:'',
          list:[
            { name: '张三', age: '18' },
            { name: '张四', age: '17' },
            { name: '张五', age: '17' },
            { name: '老六', age: '18' },
            { name: '老八', age: '18' },
            { name: '小三', age: '19' },
            { name: 'Xingyue', age: '18' },
          ]
        },
        computed:{
          fillist(){
            // 返回过滤后的数组
            return this.list.filter((p)=>{
              return p.name.indexOf(this.keyWord) !==-1 || p.age.indexOf(this.keyWord) !==-1
            })
          }
        }
      })
    </script>
  </body>
</html>

2 watch 监听实现模糊查询

vue 中通过watch 监听实现模糊查询

vue 中通过计算属性实现模糊查询,创建 html 文件,代码直接放入即可。

完整代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>人员列表</h2>
      <input type="text" placeholder="请输入名字" v-model="keyWord">
      <table>
        <thead>
          <tr>
            <td>名字</td>
            <td>年龄</td>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item,i) in fillist" :key="i">
            <td>{{ item.name }}</td>
            <td>{{ item.age }}</td>
          </tr>
        </tbody>
      </table>
    </div>
​
    <script src="./lib/vue-2.6.12.js"></script>
​
    <script>
      const vm = new Vue({
        el: '#app',
        data: {
          keyWord:'',
          list:[
            { name: '张三', age: '18' },
            { name: '张四', age: '17' },
            { name: '张五', age: '17' },
            { name: '老六', age: '18' },
            { name: '老八', age: '18' },
            { name: '小三', age: '19' },
            { name: 'Xingyue', age: '18' },
          ],
          fillist:[]
        },
        watch:{
          keyWord:{
            immediate:true,//在框的值还没变化时执行如下函数显示出所有的情况
            handler(val){
              this.fillist = this.list.filter((p)=>{
                return p.name.indexOf(val) !==-1 || p.age.indexOf(val) !==-1
              })
            }
          }
        }
      })
    </script>
  </body>
</html>
演示和计算属性的一样。。

3 通过按钮点击实现模糊查询

这里我是在 vue-cli 中完成的,完整代码如下。

vue.app 代码:

<template>
  <div id="app">
    <!-- 输入框 -->
    <input type="text" v-model="value" placeholder="请输入姓名/年龄" />
    <!-- 查询按钮 -->
    <button @click="search">查询</button>
    <!-- 给table表格赋值 -->
​
    <table>
      <thead>
        <tr>
          <td>姓名</td>
          <td>年龄</td>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item,i) in tableData" :key="i">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>
​
<script>
export default {
  data() {
    return {
      value: '',
      tableData: [
        { name: '张三', age: '18' },
        { name: '张四', age: '17' },
        { name: '张五', age: '17' },
        { name: '老六', age: '18' },
        { name: '老八', age: '18' },
        { name: '小三', age: '19' },
        { name: 'Xingyue', age: '18' },
      ],
      //表格B用原表格的数据
      tableDataB: [
        { name: '张三', age: '18' },
        { name: '张四', age: '17' },
        { name: '张五', age: '17' },
        { name: '老六', age: '18' },
        { name: '老八', age: '18' },
        { name: '小三', age: '19' },
        { name: 'Xingyue', age: '18' },
      ],
    };
  },
  methods: {
    // 点击搜索 支持模糊查询
    search() {
      //表格用原表格的数据 即 用于搜索的总数据
      this.tableData = this.tableDataB;
      //获取到查询的值,并使用toLowerCase():把字符串转换成小写,让模糊查询更加清晰
      let _search = this.value.toLowerCase();
      let newListData = []; // 用于存放搜索出来数据的新数组
      if (_search) {
        //filter 过滤数组
        this.tableData.filter((item) => {
          // newListData中 没有查询的内容,就添加到newListData中
          if (
            item.name.toLowerCase().indexOf(_search) !== -1 ||
            item.age.toLowerCase().indexOf(_search) !== -1
          ) {
            newListData.push(item);
          }
        });
      }
      //查询后的表格 赋值过滤后的数据
      this.tableData = newListData;
    },
  },
}
</script>
​
<style></style>

main.js 代码如下:

import Vue from 'vue'
import App from './App.vue'
​
Vue.config.productionTip = false
​
new Vue({
  render: h => h(App),
}).$mount('#app')

整体结构:

vue实现input输入模糊查询的三种方式

演示:

输入关键字,点击查询:

vue实现input输入模糊查询的三种方式

大小写模糊查询:

vue实现input输入模糊查询的三种方式

到此这篇关于vue实现input输入模糊查询的三种方式的文章就介绍到这了,更多相关vue input输入模糊查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
Vue 的 v-model用法实例
Nov 23 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
对vue生命周期的深入理解
Dec 03 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue监视数据的原理详解
Feb 24 Vue.js
Vue如何清空对象
Mar 03 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 #Vue.js
Vue深入理解插槽slot的使用
Aug 05 #Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 #Vue.js
vue递归实现树形组件
Jul 15 #Vue.js
VUE递归树形实现多级列表
Jul 15 #Vue.js
Vue2项目中对百度地图的封装使用详解
vue如何在data中引入图片的正确路径
Jun 05 #Vue.js
You might like
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
跟老齐学Python之用Python计算
2014/09/12 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
销售助理岗位职责
2014/02/21 职场文书
七夕情人节促销方案
2014/06/07 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
2016年会开场白台词
2015/06/01 职场文书
学校教师培训工作总结
2015/10/14 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python