vue 移动端跳页搜索自动获取焦点

需求:点击搜索框跳转新页面然后自动获取焦点弹起键盘。
遇到的问题:
inputautofocus属性在android上可以,在ios上不兼容,ios为了安全起见,禁掉了。

解决方案:

  1. 使用子路由做新页面
    子页面撑满全屏,看起来是一个新页面,并且具有前后路由跳转的功能。
  2. 点击父页面的搜索框,跳转子页面的搜索框
  3. !!子页面的路由不能使用懒加载的方式 引入,会使自动获取焦点失效。

具体实施部分代码:

// router.js
import { createRouter, createWebHashHistory } from 'vue-router'
import SearchPage from '@/views/Search.vue'
const routes = [
	{
    path: '/planList',
    name: 'PlanList',
    component: () => import('@/views/PlanList.vue')
    children: [{
      path: 'planSearch',
      name: 'PlanSearch',
      component: SearchPage
    }]
  },
]
// 父页面 PlanList.vue
<template>
	<div class="input-box" @click="jumpInputSearch()">
	  <!-- <van-icon name="search" color="#c8c8c8" /> -->
	  <img class="search-icon" src="@/assets/img/public/search.png" />
	  <span>搜索姓名</span>
	</div>
	<router-view></router-view>
</template>
<script setup>
import { useRouter } from 'vue-router'
const route = useRouter()
const jumpInputSearch = () => {
	route.push({ name: 'PlanSearch' })
}
<script>
// 子页面 PlanList.vue
<template>
	<input type="text"
	   placeholder="搜索姓名"
	   v-model.trim="searchData"
	   v-focus>
</template>
<script>
export default {
directives: {
    focus: {
      // 指令的定义
      mounted (el) { // vue2: mounted改成inserted
        el.focus()
      }
    }
  }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值