Vue使用el-input自动获取焦点和二次获取焦点问题及解决
目录
- 使用el-input自动获取焦点和二次获取焦点问题
- 使input和el-input自动获取焦点的处理
- 总结
使用el-input自动获取焦点和二次获取焦点问题
最近,碰到一个问题,就是输入框旁边有一个编辑按钮,点击时,才可以对输入框进行编辑:
要实现的效果:
为了方便输入,需要自动获取焦点,所以加入了autofocus,但是发现,只有第一个并且第一次点击才起作用。
查了网上的一些文档,说是跟dom的渲染顺序和数据的缓存有点儿关系,至于深层次的原因,还没查到。
然后使用了Vue提供的自定义指令来解决,还有一点儿需要注意,el-input在页面渲染后,外层是个div,需要拿到里面的input才会有效果。
<el-input v-focus></el-input> directives: { // 注册一个局部的自定义指令 v-focus focus: { // 指令的定义 inserted: function (el) { // 聚焦元素 el.querySelector('input').focus() } } },
还有一种解决方案,是使用 Vue.nextTick() 和 Ref去做,例子就不去写了,都是去操作dom的。
使input和el-input自动获取焦点的处理
【普通input的自定义指令操作】:先在入口文件注册一个全局自定义指令
// main.js Vue.directive('focus', { inserted (el, binding, vnode) { // 聚焦元素 el.focus() } })
【普通input的自定义指令使用】:v-"+指令名"
// index.vue <input v-focus placeholder="因为有v-focus,所以我聚焦了" />
【el-input的自定义指令操作】:先在入口文件注册一个全局自定义指令
// main.js Vue.directive('fo', { inserted (el, binding, vnode) { // 聚焦元素 el.querySelector('input').focus() } })
【el-input的自定义指令使用】:v-"+指令名"
// index.vue <el-input v-fo placeholder="因为有v-fo,所以我聚焦了"></el-input>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
详解elementUI中input框无法输入的问题
最近发现别人项目中在输入密码的时候发现input框无法输入进去 键盘都快敲坏了还是无法输入 通过各种排查.还是无法解决这个问题 后面无意中发现 elementUI中@input事件可以拿到当前的输入的值 问题找到了 视图没有更新的问题 那么怎么解决了 刷新通过this.$forceUpdate() 可以解决这个问题 这样的话这个问题就解决了 原因可能是由于组件嵌套太深(不是很了解为啥出现这个问题有没有大神解释一波 ) 到此这篇关于详解elementUI中input框无法输入的问题的文章就介绍到这
-
el-input无法输入的问题和表单验证失败问题解决
目录 1.el-input无法输入的问题 原因1.el-input组件没有绑定双向响应式数据(v-model) 原因2.组件嵌套太深还是该组件是一个坑(具体原因不清楚,只知道解决方法) 解决方法的步骤 2.表单验证失败的问题 总结 1.el-input无法输入的问题 原因1.el-input组件没有绑定双向响应式数据(v-model) 解决方案:在data中定义一个变量,然后在el-input组件中使用v-model进行双向数据绑定,这样子就会解决el-input组件无法输入的问题了. 原因2.
-
Vue-element中el-input输入卡顿问题的解决
目录 Vue-element中el-input输入卡顿 解决方法 vue遇到 el-input有时无法输入的bug 总结 Vue-element中el-input输入卡顿 最近使用Vue-element时,遇到了el-input输入卡顿问题,影响用户体验,如下 el-input是这样写的,没有加额外的事件 <el-input v-model="code" placeholder="code" type="textarea" :rows=&q
-
vue el-input输入框输入不了的解决方法
目录 一.问题 二.解决方法 三.总结 一.问题 1.今天写代码遇到了一个很奇葩的问题:写了很多个输入框,其他输入框都没有问题,就最后一个单独处理的有问题,输入框里面输入不了东西.着实不明白为什么,一遍又一遍抱怨,重复输入,里面还是除了原有的值什么都输不了. 除了原有的3,什么都输不了 二.解决方法 1.用vue dev-tools审查了才发现这个输入框无论输入什么,value值都是不变化,尽管 也触发了input事件(和html没有关系) html的逻辑也完全相同,定义的对象的value和v-
-
Vue项目中input框focus时不调出键盘问题的解决
目录 input框focus时不调出键盘问题 自动获取input焦点(内含ios不能唤起键盘解决方法) 最开始的用法 如果想要解决ios不生效办法 input框focus时不调出键盘问题 在移动端,实现input框获得焦点的同时不会唤起手机键盘. 亲测有效!!! <input type="text" placeholder="收货地址" v-model="address3" @focus.prevent="showcountF&q
-
element input输入框自动获取焦点的实现
最近项目中在做表单的时候,需要自动滚动到评论框,并且让评论框自动聚焦,这就需要手动触发输入框的 focus 状态. 但是,element并不支持autofocus属性,那就只能通过原生的js效果获取聚焦效果了 document.getElementById("input").focus(); 或者利用vue的ref属性也可以实现聚焦效果: 原理其实很简单,Element 已经提供了 focus 方法,但是文档并没有写明如何去调用,下面是在el-input标签上加入ref属性,然后在需要
-
vue中监听input框获取焦点及失去焦点的问题
目录 一.背景 二.首先是正宗的监听事件的写法 1.html代码 2.JS部分 三.为什么上次监听焦点事件失败呢 1.不好用的原因 2.新增指令的方法 一.背景 博主之前在用vue的获取焦点,失去焦点的时候,出现了@blur和@focus无效的情况.当时百思不得其解.今天又在写vue页面的时候,突然@blur和@focus又好用了.emmmm,看来这部分值得一战. 二.首先是正宗的监听事件的写法 1.html代码 //这是html的输入框.定义了一个获取焦点,失去焦点的方法 <input pla
-
vue.js的简单自动求和计算实例
一.导入vue.js 可以用cdn,也可以用内嵌去官网下载插件https://vuejs.org/js/vue.js. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script> 二.前端页面 我用了一个表格,话不多说直接上代码 <div id="vuetest"> <table> <tr> <td>数学</td>
-
vue3输入框生成的时候如何自动获取焦点详解
目录 前言 创建实例演示(创建文件,可忽略) 解决方法 1.方法一 2.方法二 总结 前言 当我们在做vue3的项目的时候,在对一些信息的修改的时候,需要双击或者点击按钮来进行操作,让数据变成输入框来进行修改数据,当输入框失去焦点的时候就进行保存,然而不方便的是,输入框出现的时候不能获取焦点导致用户的体验不好. 创建实例演示(创建文件,可忽略) 首先我们需要一个vue3的项目,如何创建一个vue3的项目,新建一个空的文件夹,cmd打开,输入 1. vue create 项目的名称举例:vue c
-
vue中使用input[type="file"]实现文件上传功能
注意:input[type="file"] 标签中的属性accept="application/msword,application/pdf" 在pc上正常,但是在手机ios和android上这个文件格式限制会被忽略,所以需要在js中增加格式的判断,以及对应显示样式的设置.(我也是刚发现,如果有遇到这个问题的可以参考下---下面有更改:) ``` <template> <div id="my-careers"> <h
-
vue监听input标签的value值方法
由于项目需要做实时搜查询数据,所以需要监听input标签的value,这里使用的前端框架vue <input id="materialSearch" type="text" @keyup.enter="search" @input="search($event)"/> 这里的重点是:@input="search($event)",表示当文本框有内容输入时,则调用search方法 /*模糊搜索*/
-
vue element-ui实现input输入框金额数字添加千分位
在util.js中定义方法 包含金额添加过滤千分位,验证金额格式等 const MoneyTest = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/; // 金额添加千分位 const comdify = function (n) { if(!n) return n; let str = n.split('.'); let re = /\d{1,3}(?=(\d{3})+$)/g; let n1 = str[0].replace(re, "$&,");
-
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
我就废话不多说了,大家还是直接看代码吧~ <Input v-model="relatedWords" type="textarea" placeholder="请输入" @input='verifyInput(formItem.relatedWords)'/> verifyInput(v){ let _this=this; let punctuation = /[`~!@#$%^&*_\-=<>?:"{}
-
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
业务场景:使用vue +element ui 的el-dialog,点击弹窗之后,默认加载第一个按钮的数据进行初始化. div 指令: // 自动触发点击事件 directives:{ trigger:{ inserted(el,binging){ // console.log("自动触发事件") el.click() } } }, PS:下面看下vue 自动触发点击事件 需要,点击左边的列表出详情,但是都需要点击事件,页面进来时,默认触发点击事件 方法一,vue自定义指令 direc
随机推荐
- 解析PHP中的内存管理,PHP动态分配和释放内存
- python Selenium爬取内容并存储至MySQL数据库的实现代码
- 使用ASP控制指定站点解析脚本语言函数
- Android开发之微信底部菜单栏实现的几种方法汇总
- C#数据结构与算法揭秘三 链表
- SWT(JFace) 体验之FontRegistry
- 用Nodejs搭建服务器访问html、css、JS等静态资源文件
- 解决ASP.NET中的各种乱码问题总结
- 原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
- Jquery优化效率 提升性能解决方案
- 使用ImageMagick进行图片缩放、合成与裁剪(js+python)
- Bootstrap CSS使用方法
- linux apache泛域名解析及dns相关
- php禁止浏览器使用缓存页面的方法
- jQuery中ajax错误调试分析
- Visual Studio 2010配置OpenCV的方法
- vue实现某元素吸顶或固定位置显示(监听滚动事件)
- 详解C# 代码占用的空间
- JS求Number类型数组中最大元素方法
- jQuery实现提交表单时不提交隐藏div中input的方法