Vue3如何根据搜索框内容跳转至本页面指定位置

目录
  • 需求
  • 思路
  • 实现过程
  • 补充内容
  • 总结

需求

需求:根据搜索框内容跳转至本页面指定位置

搜索框是我们在开发各类项目中出现率很高的一个"组件",在element-plus中名为"自动补全输入框",即我们可以根据输入的内容去检索列表或者表格或者其他本页面出现的元素,那我们应该如何去实现这个行为呢?

思路

整体过程是这样的:

点击输入框的内容,页面跳转至指定的内容位置

实现过程

①首先我们必须要在页面中引入自动补全输入框组件

template部分
<el-autocomplete v-model="state1" :fetch-suggestions="querySearch" class="inline-input w-50"
	placeholder="搜索" @select="handleSelect" @change='change'>
</el-autocomplete>

srcipt部分
import { onMounted, ref } from 'vue'

interface RestaurantItem {
  value: string
  link: string
}
const state1 = ref('')
const restaurants = ref<RestaurantItem[]>([])
const querySearch = (queryString: string, cb: any) => {
  const results = queryString
    ? restaurants.value.filter(createFilter(queryString))
    : restaurants.value
  // call callback function to return suggestions
  cb(results)
}
const createFilter = (queryString: string) => {
  return (restaurant: RestaurantItem) => {
    return (
      restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
    )
  }
}
const loadAll = () => {
  return [
    { value: 'vue', link: 'https://github.com/vuejs/vue' },
    { value: 'element', link: 'https://github.com/ElemeFE/element' },
    { value: 'cooking', link: 'https://github.com/ElemeFE/cooking' },
    { value: 'mint-ui', link: 'https://github.com/ElemeFE/mint-ui' },
    { value: 'vuex', link: 'https://github.com/vuejs/vuex' },
    { value: 'vue-router', link: 'https://github.com/vuejs/vue-router' },
    { value: 'babel', link: 'https://github.com/babel/babel' },
  ]
}

const handleSelect = (item: RestaurantItem) => {
  console.log(item)
}

onMounted(() => {
  restaurants.value = loadAll()
})

需要解释的是组件中的这个事件

select 点击选中建议项时触发

handleSelect 则是手动触发选中建议事件

这一项是"点击输入框内容"

②根据选中的内容,在对应的表格中查找

const handleSelect = (item: RestaurantItem) => {
  console.log(item)
}

在这个函数中,我们可以log item,可以发现item就是loadAll中的内容,我们可以给loadAll里的内容都绑定一个id值,例如

 { id:1,value: 'vue', link: 'https://github.com/vuejs/vue' },

然后我们在对应的表格的内容也添加一个id,这里就不举例了,至此,我们可以判断,如果loadAll里的id==表格里某一项的id,那就是我们需要的对象

for(let i=0;i<表格长度;i++){
	let id = 表格[i].id
	if (item.id == 表格[i].id) {
	document.getElementById(id).scrollIntoView();
	}

③跳转

document.getElementById(id).scrollIntoView();

整体的实现思路是:拿到搜索框选中的内容的id,与此同时给表格中的每一项内容都添加id,然后在select事件中,利用for循环去寻找搜索框id==表格内容id的对象,最后是利用scrollIntoView()方法进行跳转

补充内容

需要补充的是,如何获取到对应的元素?一是v-for循环,给每个对象添加id,格式是v-for = value in 表格 :id="value.id"
二是通过绑定ref函数获取

总结

到此这篇关于Vue3如何根据搜索框内容跳转至本页面指定位置的文章就介绍到这了,更多相关Vue3跳转指定位置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue3路由新玩法useRoute和useRouter详解

    目录 我们通过useRouter来手动控制路由变化 通过useRouter传参的三种方式 隐式传参params 显式传参query 动态路由传参 useRouter 的push和replace 原来的vue2路由是通过this.$route和this.$router来控制的.现在vue3有所变化,useRoute相当于以前的this.$route,而useRouter相当于this.$router 我们通过useRouter来手动控制路由变化 import { useRouter } from

  • vue3配置router路由并实现页面跳转功能

    目录 1.安装vue-router 2.根目录下新建router文件夹,下面新建index.js文件和routes.js 2.1文件中引入vue方法.配置页面具体路径 3.main.js文件中引入路由 4.APP.vue里声明路由的占位符<router-view></router-view> 5.测试 6.文件代码 1.安装vue-router 用vue3需要安装版本4.0以上的vue-router,安装命令: npm install vue-router@next --save

  • vue3中使用router路由实现跳转传参的方法

    目录 前言 一.路由跳转 二.页面传参需要注意 总结 大家好,今天和大家分享一下vue3中如何进行跳转并进行传参. 前言 vue3取消了vue2部分api,所以路由跳转和传值的方式会有所不同.我们今天主要讲router.push(location, onComplete?, onAbort?)vue3中新增API:useRouter和useRoute 一.路由跳转 1.首先在需要跳转的页面引入API—useRouter import { useRouter } from 'vue-router'

  • 关于Vue3路由push跳转问题(解决Vue2this.$router.push失效)

    目录 1.Vue3.x路由跳转 2.获取参数 3. router-link 4.总结 Vue3.x出来有一阵子了,今天用它的时候发现Vue2中的this.$router.push竟然不能用了!!!!!,真是服了,还得花点时间瞅瞅咋回事,所以.....还是总结下吧 1.Vue3.x路由跳转 不要this了,直接引用路由对象,看下图: import router from '@/router/index.js' 用这个路由对象router去push(剩下的和Vue2.x一样) router.push

  • Vue3使用vue-router如何实现路由跳转与参数获取

    目录 vue-router实现路由跳转与参数获取 路由跳转和传参 路由跳转三种方法的总结 一.第一种 二.第二种 三.第三种 vue-router实现路由跳转与参数获取 路由跳转和传参 import { defineComponent, onMounted, reactive, readonly, ref } from 'vue'; import { useRouter, useRoute } from 'vue-router'; export default defineComponent({

  • vue3中router路由以及vuex的store使用解析

    目录 vue3 router路由及vuex store使用 1.路由 2.vuex vue3中router路由和vuex的store使用,获取对象基本使用 vue3中router和store使用方法 1.企业开发Router全局配置 2.企业开发Store全局配置 功能快捷键 vue3 router路由及vuex store使用 1.路由 <script> import { useRouter, useRoute } from 'vue-router' export default {   s

  • Vue3如何根据搜索框内容跳转至本页面指定位置

    目录 需求 思路 实现过程 补充内容 总结 需求 需求:根据搜索框内容跳转至本页面指定位置 搜索框是我们在开发各类项目中出现率很高的一个"组件",在element-plus中名为"自动补全输入框",即我们可以根据输入的内容去检索列表或者表格或者其他本页面出现的元素,那我们应该如何去实现这个行为呢? 思路 整体过程是这样的: 点击输入框的内容,页面跳转至指定的内容位置 实现过程 ①首先我们必须要在页面中引入自动补全输入框组件 template部分 <el-aut

  • jquery 仿锚点跳转到页面指定位置的实例

    js 仿锚点跳转到页面指定位置,用的是 offset() 方法 $(document).ready(function(){ var target_top = $("#qa5").offset().top; //$("html,body").animate({scrollTop: target_top}, 1000); //带滑动效果的跳转 $("html,body").scrollTop(target_top); }); jQuery: offs

  • PHP弹出提示框并跳转到新页面即重定向到新页面

    这两天写一个demo,需要用到提示并跳转,主要页面要求不高,觉得没必要使用AJAX,JS等,于是研究了下怎么在PHP提示并跳转. 开始先是用了下面这种: 复制代码 代码如下: echo "<script> alert('sucess');parent.location.href='/user/index'; </script>"; alert里面是提示的消息,href是提示后跳转的页面. 后来想起TP框架里面有个redirect()重定向的方法,就去看了看. 不

  • Jquery跳到页面指定位置的方法

    offset() (包含top left) 复制代码 代码如下: height() scrollTop $("body").scrollTop(**); 原理是修改页面的scrollTop. jquery动态效果:animate() 复制代码 代码如下: $("html,body").animate({ scrollTop: **}, 500); $("html,body").animate({ scrollTop: $().offset().t

  • 基于Vue sessionStorage实现保留搜索框搜索内容

    最近遇到个需求:因为是后台管理系统,会频繁切换页面(路由),再次切换路由就重新加载页面了,重新输入条件很繁琐,需要保留搜索框的内容.(废话,看不同项目的不同需求吧) 保留搜索框内容: 利用sessionStorage来保存每次搜索框的内容. 后台管理系统的搜索栏除了筛选条件肯定还会有搜索按钮吧 我的键名是根据我的页面路由名 + 'Stor'来取名的,这个拼接的'Stor'只是我个人用来区分此后缀的键名是存什么内容的,可按自己喜好来. 比如路由是carManage 键名就是carManageSto

  • Jquery Easyui搜索框组件SearchBox使用详解(19)

    本文实例为大家分享了Jquery Easyui搜索框组件的实现代码,供大家参考,具体内容如下 加载方式 Class加载 <input id="ss" class="easyui-searchbox" style="width:300px" data-options="prompt:'Please Input Value',menu:'#box'"> </input> <div id="b

  • 使用JavaScrip模拟实现仿京东搜索框功能

    使用js模拟实现京东的搜索框,主要用了js中的onfocus(注册焦点事件),onblur(失去焦点的事件): 主要实现了: 在鼠标点进去的时候,里面的默认内容消失: 在输入之后,再点击搜索框外,输入的内容还在搜索框中: 如果输入为空,点击搜索框外,里面自动显示默认内容: 内容颜色的改变 效果图 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>京东搜

  • 微信小程序实现搜索框功能及踩过的坑

    先上代码: wxml: <!-- 顶部搜索框 --> <view class="inputcontainer"> <view class="input" catchtap="inputSwitchStatus" wx:if="{{!edit}}">搜索商品</view> <view class="edit" wx:else> <form bi

  • django admin search_fields placeholder 管理后台添加搜索框提示文字

    本文主要介绍了django admin search_fields placeholder 管理后台添加搜索框提示文字,分享给大家,具体如下: 如图, Django admin后台生成的搜索框, 默认是没有提示文字的, 不够友好; 网上也没搜到什么好的示例, 于是自己动手实现了一个 0. 已经存在的app名为carousel, 大致相当于如下操作/代码 $ python manage.py startapp carousel # settings.py ``` INSTALLED_APPS =

  • Flutter实现自定义搜索框AppBar的示例代码

    目录 介绍 效果图 实现步骤 完整源码 总结 介绍 开发中,页面头部为搜索样式的设计非常常见,为了可以像系统AppBar那样使用,这篇文章记录下在Flutter中自定义一个通用的搜索框AppBar记录. 功能点: 搜索框.返回键.清除搜索内容功能.键盘处理. 效果图 实现步骤 首先我们先来看下AppBar的源码,实现了PreferredSizeWidget类,我们可以知道这个类主要是控制AppBar的高度的,Scaffold脚手架里的AppBar的参数类型就是PreferredSizeWidge

随机推荐