vue中,点击button按钮后,页面上的input框自动聚焦

需求:点击button按钮,录入成功后,页面上的input框自动聚焦,快速进行下一次录入,提高效率

开始尝试了几种方法都没有成功

一、首先想到的用vue指令 v-focus,然而没有成功

 <Input
       v-model="book.isbnOrIssn"
       @change.native="_getIsbn"
       @blur="_getIsbn"
       :disabled="snDisabled"
        v-focus
        placeholder="请扫描或输入ISBN/ISSN">
 </Input>
 directives: {
            focus: {
                inserted (el,{value}) {
                    if(value){
                        el.focus()
                    }
                }
            }
        },

二、操作页面dom,首先用到ref,然而还是没有任何作用

<Input
       v-model="book.isbnOrIssn"
       @change.native="_getIsbn"
       @blur="_getIsbn"
       :disabled="snDisabled"
        ref="gain"
        placeholder="请扫描或输入ISBN/ISSN">
 </Input>

this.$refs.gain.focus()

三、用定义id的形式去操作页面dom,结果也是不行

  document.getElementById(‘gain‘).querySelector(‘input‘).focus()

最后去网上查找资料,发现是更新dom先后顺序的问题,在vue中,并不是每次数据改变都会触发更新dom,而是将这些操作都缓存在一个队列,在一个事件循环结束之后,刷新队列,统一执行dom更新操作。

通常情况下,我们不需要关心这个问题,而如果想在DOM状态更新后做点什么,则需要用到nextTick。在vue生命周期的created()钩子函数进行的DOM操作要放在Vue.nextTick()的回调函数中,因为created()钩子函数执行的时候DOM并未进行任何渲染,而此时进行DOM操作是徒劳的,所以此处一定要将DOM操作的JS代码放进Vue.nextTick()的回调函数中。

 this.$nextTick( () =>{
        this.$refs.gain.focus()
 } )

最后实现了想要的效果:

原文地址:https://www.cnblogs.com/wangdashi/p/9660747.html

时间: 2024-10-10 21:20:47

vue中,点击button按钮后,页面上的input框自动聚焦的相关文章

点击button按钮后界面不自动刷新

问题: 我使用的button标签,在 标签中没有使用ruant=“server”的属性,但是在点击button时,界面还是会刷新 解决方式: 由于界面中含有form标签,而button标签的默认type是submit.所以相当于进行了form提交操作.为了是界面不刷新只需要在botton标签中加入type=“button”即可.

原生实现点击某个按钮后弹出弹出框

window.onload=function(){ var a = document.getElementById("tdful"); var b = a.getElementsByTagName("li");// 获取第一列所有单元 var d = document.getElementById("secondtd");//获取所有模板 var c = d.getElementsByTagName("div"); for(v

cocos2d-x:解决点击拖动按钮后,所在的layer监听不到触摸事件的问题

点击拖动按钮后,想让所在的layer监听到屏幕的触摸事件,可以把该按钮拖动开始的时候设置setTouchEnabled为false;例: #include "ui/UIButton.h" bool myDemo::init() { // 设置点击事件 EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(

页面实现验证码功能,点击“注册”按钮后,无论是否完成注册,验证码都能够自动刷新

要求页面实现验证码功能,点击"注册"按钮后,无论是否完成注册,验证码都能够自动刷新 <script> function validteCode() { var codes = new Array(4);       // var colors = new Array("Red","Green","Gray","Blue","Maroon","Aqua",&

问题:asp.net 点击button按钮调到页面顶部;结果:asp.net点击一个按钮,使页面跳转到本面页上的指定位置

asp.net点击一个按钮,使页面跳转到本面页上的指定位置 (2011-04-19 16:46:51) 转载▼ 标签: it   最近在做一个项目. 用到标题所说的功能. 实现方法: 1.在aspx中添加一个javascript: <script language="javascript" type="text/javascript">         <!-- function autoclick()         {            

js点击button按钮跳转到页面代码

www.111cn.net 编辑:smoke 来源:转载 在网页中button按钮不具备a标签的属性了,如果我们要给button 按钮增加跳转事件我们可以在它的确onclick事件上点击跳转js来实现,下面我来给大家介绍一些常用的方法. 点击按钮怎么跳转到另外一个页面呢?我们在网站制作中可能是需要的,因为有时我们需要做这样的效果,尤其是将按钮做成一个图片,而点击图片要跳转到新的页面时,怎么做到呢? 这样的效果可以:onclick="window.location=’新页面’" 来实现.

smartwizard 点击提交按钮后界面被刷新

项目中用到了smartwizard,对用户的入网配置进行了分步操作 这个插件给的范例中除了提供上一步下一步之外, 还可以添加其他的按钮 我这边额外添加了两个按钮,分别是提交和关闭 点击提交按钮时,异步向后台提交数据,步骤配置代码如下: $('#smartwizard').smartWizard({ selected: 0, theme: 'dots', cycleStep: false, transitionEffect:'fade', keyNavigation: false, showSte

C++ windows图形界面,点击Button按钮通过openFileDialog控件选择文件

一直没用C++写过图形界面,之前用C#写很简单啊,没想到今天用C++还是有点不爽! 第一个问题,就是点击一个按钮button,选择文件,非文件夹,是文件,就是图片之类的东西! 首先,可以在界面中拖一个openFileDialog控件,控件名字就叫openFileDialog1,如图所示 也可以在Button的点击事件里new一个openFileDialog控件也可以! 然后,就是在button点击事件里,写下相应的代码就可以了: private: System::Void button1_Cli

vue实现点击一个按钮出现弹框,点击弹框外关闭弹框

效果图展示: View层 <template> <div> <div class="mask" v-if="showModal" @click="showModal=false"></div> <div class="pop" v-if="showModal"> <button @click="showModal=false&quo