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 相关文章推荐
js动态创建、删除表格示例代码
Aug 07 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
JavaScript性能优化总结之加载与执行
Aug 11 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
JavaScript学习笔记之函数记忆
Sep 06 Javascript
使用 vue-i18n 切换中英文效果
May 23 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
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
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
PHP中的替代语法简介
2014/08/22 PHP
给ECShop添加最新评论
2015/01/07 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
javascript学习之json入门
2016/12/22 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
Python continue语句用法实例
2014/03/11 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python抽取指定url页面的title方法
2018/05/11 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
python对Excel的读取的示例代码
2020/02/14 Python
python自动生成证件号的方法示例
2021/01/14 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
运动员口号
2014/06/09 职场文书
授权收款委托书范本
2014/10/10 职场文书
军人离婚协议书样本
2014/10/21 职场文书
政风行风建设整改方案
2014/10/27 职场文书
大学生党员自我评价
2015/03/04 职场文书
浅析Django接口版本控制
2021/06/26 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js