vue中弹窗input框聚焦_Vue/Vue中input框自动聚焦/README.md · RaceK/LearningNotes - Gitee.com...

在Vue登录页面,为了解决Chrome自动保存密码导致首次登录后按回车无法触发输入聚焦的问题,可以通过设置input的ref属性,结合$nextTick()或mounted钩子函数来实现input框的自动聚焦。详细步骤包括在模板中设置ref,创建聚焦方法并在created或mounted中调用以确保DOM更新后执行聚焦操作。
摘要由CSDN通过智能技术生成

# Vue中input框自动聚焦

## 前言

今天在蘑菇博客登录的时候,就发现一个问题,因为在input绑定了键盘事件,按回车的时候就触发登录事件,但是因为Chrome会自动保存密码,所以也就说第一次登录的时候才会输入账号和密码

我们按回车事件后,就会触发对应的方法

## 解决方案

其实解决的方案也比较简单,就是需要我们在进入登录页面的时候,input框自动聚焦,然后我们按回车事件后,就会触发对应的方法

关于input自动聚焦的思路:

- 给需要聚焦的input设置ref

```

v-model="loginForm.username"

ref="userNameInput"

name="username"

type="text"

auto-complete="on"

placeholder="username"

@keyup.enter.native="handleLogin"

/>

```

- 创建一个聚焦的方法

this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新

```

inputFocus: function() {

this.$nextTick(x => {

this.$refs.userNameInput.focus()

})

},

```

- 在create方法中调用

```

created() {

this.inputFocus()

},

```

这样每次加载登录页面的时候,就会自动对input框进行聚焦了,然后只需要按下回车,即可登录到后台系统~

因为我们都知道,vue的钩子函数created,在调用的时候,Dom还没有进行任何渲染,如果我们直接执行

```

this.$refs.userNameInput.focus()

```

这个代码的话,是没有效果的,因此需要使用this.$nextTick(),将它延迟到下次Dom渲染的时候执行

但是如果我们在mounted钩子函数执行的话,因为当mounted钩子函数执行的时候,Dom树已经渲染完毕了,那么就可以直接获取对应的dom进行渲染,也就不需要使用this.$nextTick()方法了,因此我们还可以直接这样写

```

mounted() {

this.$refs.userNameInput.focus()

},

```

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值