需求:

文本框可根据输入内容高度自适应,不带滚动条,高度可变的那种,我搜索了很多,发现textarea无法实现我的需求,scrollHeigh这个无法获取实际内容的高度(我用的是那种简单的,可能我写的哪里不对吧;那种代码很多的,我又不想那么去做,麻烦。。。),所以只能div模拟textarea文本框了。

使用div模拟textarea文本框,输入文字高度自适应,且实现字数统计和限制,输入字数超出65时,统计数字会变红,作为提示,当div失去焦点时,字数会剪切为最大限制字数65。

// 可实现div模仿文本框进行编辑
contenteditable="true"

其实,本来实时限制用户输入字数,也就是当用户输入字数达到65时,不允许再次输入,体验会更好。但是当我这样做时,div里的光标会跑到div的最前面,再次输入时导致后面字被剪切掉,我无法获取和定位光标,所以只能设置当blur,失去焦点时,再剪切字数(当然,光标的获取和定位应该可以实现,有需求的小伙伴,可以自己试试 ^_^)。

效果图:

               

HTML:

<div class="add-doss-retpl"><div>意向备注 <span class="c-gy"><span :class="addTotal > 65 ? 'hx-red' : ''" > {{addTotal}}</span>/65</span></div><div class="add-doss-foremark" id="add-doss-foremark" @input="addDossInput($event)" @blur="addDossBlur($event)" contenteditable="true"></div>
</div>

CSS:

 .add-doss-retpl{background-color: #fff;padding: 10px;.add-doss-foremark{width:100%;margin: 10px 0;border:#e1e1e1 solid 1px;padding: 10px 8px;}.hx-red{color:red;}}

VUE.js:

<script>export default {data:function(){return {addInremark:'', // 意向备注addTotal:0, // 统计输入框里的字数}},activated:function () {this.addInremark = (JSON.parse(sessionStorage.getItem('customerComments')) || JSON.parse(sessionStorage.getItem('customerComments'))=='') ? JSON.parse(sessionStorage.getItem('customerComments')) : (this.$route.query.customerComments?this.$route.query.customerComments:'');// 输入框赋初始值document.getElementById('add-doss-foremark').innerHTML = this.addInremark;this.getAddTotal();  // 字数统计},watch:{// 监听意向备注(统计字数&&存储)'addInremark'(){this.getAddTotal();sessionStorage.setItem('customerComments', JSON.stringify(this.addInremark));},},beforeRouteEnter(to, from, next){if (from.name == "dossCustomer" || from.name == "clientDetail" ) {sessionStorage.removeItem('customerComments');    }next();},methods:{// 监听意向备注输入addDossInput(e){this.addInremark = e.target.innerHTML;},// 监听意向备注失去焦点addDossBlur(e){if(e.target.innerHTML.length > 65){this.addInremark = e.target.innerHTML.slice(0,65);let addRe = document.getElementById('add-doss-foremark');addRe.innerHTML = this.addInremark;}else {this.addInremark = e.target.innerHTML;}},// 字数统计getAddTotal(){this.addTotal = this.addInremark.length;}}}
</script>

div模拟textarea文本框,输入文字高度自适应,且实现字数统计和限制相关推荐

  1. div模拟textarea文本域轻松实现高度自适应——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com 本文地址: http://www.zhangxinxu.com/wordpress/?p=1362 一.关于t ...

  2. div模拟textarea文本域轻松实现高度自适应

    2019独角兽企业重金招聘Python工程师标准>>> .app-box-content {     min-width: 400px;     min-height: 120px; ...

  3. vue实现textarea框,文字高度自适应

    vue实现textarea框,文字高度自适应,https://blog.csdn.net/qq_38128179/article/details/103591717 下面是两种方式,注释掉的是一种,不 ...

  4. jq实现文字个数限制_js实现文本框输入文字个数限制代码

    html: 课程评价 0/5 js: var contentBox = document.getElementById('comment_content'); var max = +document. ...

  5. div模拟textarea自适应高度

    之前在公司做项目的时候,有这么一个需求,要我写一个评论框,可以随着评论的行数增加而自动扩大,最开始我想用textarea实现,但是后来尝试后发现textarea并不适合,textarea的高度不会随着 ...

  6. 已解决selenium模块向网页input文本框输入内容失败问题

    已解决(selenium向input文本框输入内容失败问题)selenium.common.exceptions.ElementNotInteractableException: Message: e ...

  7. Jquery实现 TextArea 文本框根据输入内容自动适应高度

    原文 Jquery实现 TextArea 文本框根据输入内容自动适应高度 在玩微博的时候我们可能会注意到一个细节就是不管是新浪微博还是腾讯微博在转发和评论的时候给你的默认文本框的高度都不会很高,这可能 ...

  8. 监听文本框输入开发仿新浪微博限制输入字数的textarea插件

    监听文本框输入 Firefox.Chrome.IE9,IE10 均支持 oninput 事件,此外所有版本的 IE 均支持 onpropertychange 事件. oninput 事件在用户输入.退 ...

  9. java textfield 文字居中_java.awt.TextField和TextArea:文本框和文字区控件

    在 Java AWT 内有两个与文字输入有关的类 TextField(文本框控件)和 TextArea(文本区控件),它们之间的差异在于: TextField 文本框只能输入单行文本: TextAre ...

最新文章

  1. R语言使用read.delim函数读取带分隔符的文本文件
  2. 5教程 watchout_Unit 5单元复习学案设计
  3. 去除Java字符串中的空格
  4. java osgi web开发_在Tomcat中使用Java Web应用程序的OSGi软件包
  5. 饿了么口碑实现超30亿美元融资,引领本地生活数字化升级...
  6. RedEngine11
  7. 苹果iPad mini 6更多细节曝光:全面屏加持 搭载A14/A15芯片
  8. GitHub#C#:在终端里面显示一个UI窗口(TerminalGfx)
  9. 解决Tensorflow2.0出现:AttributeError: module ‘tensorflow‘ has no attribute ‘get_default_graph‘的问题
  10. 【动态规划】01背包问题:猫狗大战
  11. 计算机基础知识第三章测试,计计算机应用基础第三章测试题
  12. Android 分享两个你学习android 平台开发必须碰到的几个知识点的组件【天气预报、日期】View 组件...
  13. HttpClient 4.3学习笔记
  14. 手机端网页切图之间出现空白的问题
  15. RDIFramework.NET ━ .NET快速信息化系统开发框架-4.5 用户管理模块
  16. g2o学习记录(4)cmake-gui再次编译g2o及不太完美的处理cs.h错误[20190323已找到完美解决方案](非干货纯记录,可不看)
  17. X64dbg-插件基本原理-加载顺序-概述-主目录
  18. 【AOP】面向切面谈恋爱(一)|学会了AOP,他最终收获了爱情
  19. 怎么理解vw和vh ?
  20. Zabbix的自动发现

热门文章

  1. nginx、uwsgi部署django项目理论+实战
  2. storm集群操作指南
  3. scala使用reduce和fold方法遍历集合的所有元素
  4. Scala入门到精通——第三节 Array、List
  5. maven创建的工程eclipse 项目--属性--为什么没有deployment assembly 按钮呢
  6. Redis 是单线程凭什么能支撑高并发
  7. Spark RDD使用详解2--RDD创建方式
  8. Netflix: 从 Batch ETL 到 Stream Processing 的转型之路
  9. 【机器学习】特征工程七种常用方法
  10. 2015-01-14