Vue实现input宽度随文字长度自适应操作


Posted in Javascript onJuly 29, 2020

Vue实现input宽度随文字长度自适应操作

业务需求,输入文字,后面的元要紧随其后,奈何input默认是有宽度,我想要达到,输入文字,动态改变input的宽度,试了很多方法,目前自己琢磨一种,有遇到问题的可以参考一下,

直接贴代码

<div class="textcontain">
     <input
      type="text"
      v-model.number="item.cardComboMoney"
      maxlength="5"
      placeholder="设定数值"
      oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
      :disabled='disabled'
      :style="{width:text(item.cardComboMoney)}"
     >
     <span
      class="textshow"
      v-if="item.cardComboMoney!=0&&item.cardComboMoney!=''"
     >元</span>
    </div>
computed: {
  text () {
   return function (value) {
    if (value == '' || value == 0) {
     return '100%'
    } else {
     return String(value).length * 0.32 + 'rem'
    }
   }
  }
 },

利用计算属性,计算当前字体的长度,我这里最多允许输入5个字符的长度,所以这样计算影响不大

补充知识:input宽度自适应(解决文字占位宽度不同所引起的问题)

问题描述:

input在输入的时候,要能让input的宽度随着输入的文字自动增宽。

思路1:获取文字的内容,然后通过文字.length * font-size计算文字的宽度,但是由于文字“i”与“中”显然占位宽度不同而引起宽度差

思路:

设置一个隐藏的span,使其font属性与input统一,然后获取span的宽度,赋值给input

<!DOCTYPE html>
<html lang="en">
 
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
 <title>input宽度自适应</title>
 <style>
  body {
   font-size: 16px;
   font-family: Arial, Helvetica, sans-serif;
  }
 
  #my-input {
   width: 20px;
   padding: 0;
   font-size: 16px;
   font-family: Arial, Helvetica, sans-serif;
  }
 
  #my-span {
   position: absolute;
   left: 0;
   visibility: hidden;
  }
 </style>
</head>
 
<body>
 <!-- 思路:将文字内容赋值给隐藏的span,然后将input的宽度设置为span的宽度 -->
 <span id="my-span"></span>
 <input type="text" id="my-input" oninput="changeWidth()">
 
 <script>
  function changeWidth() {
   var mySpan = $("#my-span");
   var myInput = $("#my-input");
   mySpan.html(myInput.val()); //给span赋值
   if (mySpan.width() > 20) {
    myInput.css('width', mySpan.width());
   }
  }
 </script>
</body>
 
</html>

以上这篇Vue实现input宽度随文字长度自适应操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript快速检测浏览器对CSS3特性的支持情况
Sep 26 Javascript
input输入框的自动匹配(原生代码)
Mar 19 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 Javascript
node.js中的buffer.length方法使用说明
Dec 14 Javascript
Node.js中child_process实现多进程
Feb 03 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
KnockoutJs快速入门教程
May 16 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
Feb 12 Javascript
js控制按钮,防止频繁点击响应的实例
Feb 15 Javascript
原生js仿浏览器滚动条效果
Mar 02 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
vue 判断元素内容是否超过宽度的方式
Jul 29 #Javascript
在vue中实现给每个页面顶部设置title
Jul 29 #Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 #Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 #Javascript
Element中Slider滑块的具体使用
Jul 29 #Javascript
vue 实现超长文本截取,悬浮框提示
Jul 29 #Javascript
javascript实现移动端触屏拖拽功能
Jul 29 #Javascript
You might like
如何分别全角和半角以避免乱码
2006/10/09 PHP
php 空格,换行,跳格使用说明
2009/12/18 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
详解javascript遍历方式
2015/11/11 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
python uuid模块使用实例
2015/04/08 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
python入门之基础语法学习笔记
2020/02/08 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
人事助理岗位职责
2013/11/18 职场文书
预备党员思想汇报
2014/01/08 职场文书
十八大感想感言
2014/02/10 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
负责培养人意见
2015/06/05 职场文书