js实时监控文本框输入字数的实例代码


Posted in Javascript onJanuary 18, 2018

需求:实时监控文本输入框的字数,并加以限制

js实时监控文本框输入字数的实例代码

1、实时监控当前输入字数,直接使用onkeyup事件方法,给输入框加maxlength属性限制长度。如:

<div>
 <textarea id="txt" maxlength="10"></textarea>
 <p><span id="txtNum">0</span>/10</p>
 </div>
var txt = document.getElementById("txt");
 var txtNum = document.getElementById("txtNum");
 txt.addEventListener("keyup", function(){
 txtNum.textContent = txt.value.length;
 })

此时已可以完成基本的监控功能,存在的问题:当输入英文时正常,但输入中文时,监控的数字会随拼音长度而变化。

2、解决方法:

compositionstart 事件触发于一段文字的输入之前(类似于 keydown 事件,但是该事件仅在若干可见字符的输入之前,而这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)。

compositionend 就是对应的就是一段文字输入的事件。

这两个属性有点类似于“开关”,如:开始进行中文输入的拼音时开关打开,不在改变监测得到的长度数值,完整输入一个或是一串文字后,开关关闭,得到监测的数值长度。

var txt = document.getElementById("txt");
 var txtNum = document.getElementById("txtNum");
 var sw = false; //定义关闭的开关
 txt.addEventListener("keyup", function(){
 if(sw == false){
  countTxt();
 }
 });
 txt.addEventListener("compositionstart", function(){
 sw = true;
 });
 txt.addEventListener("compositionend", function(){
 sw = false;
 countTxt();
 });
 function countTxt(){ //计数函数
 if(sw == false){ //只有开关关闭时,才赋值
  txtNum.textContent = txt.value.length;
 }
 }

在vue中的写法:

template:

<textarea name="suggestions-text" id="textarea" cols="30" rows="10" maxlength="300" v-on:keyup="write()" v-on:compositionstart="importStart()" v-on:compositionend="importEnd()" v-model="textContent"></textarea>
<p class="counterNum">{{conterNum}}/300</p>

data:

textContent: '',
conterNum: 0,
chnIpt: false,

methods:

write() {
 let self = this;
 if (self.chnIpt == false) {
 self.conterNum = self.textContent.length;
 }
},
importStart() {
 this.chnIpt = true;
},
importEnd() {
 this.chnIpt = false;
 this.write();
}

以上这篇实时监控文本框输入字数的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 基于原型的对象(创建、调用)
Oct 16 Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
JS图片定时翻滚效果实现方法
Jun 21 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
vue el-table实现自定义表头
Dec 11 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 Javascript
javascript操作向表格中动态加载数据
Aug 27 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 #Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 #Javascript
分享ES6的7个实用技巧
Jan 18 #Javascript
vue 动态修改a标签的样式的方法
Jan 18 #Javascript
详解vue-meta如何让你更优雅的管理头部标签
Jan 18 #Javascript
Nuxt.js踩坑总结分享
Jan 18 #Javascript
Nuxt.js实战详解
Jan 18 #Javascript
You might like
如何使用PHP获取网络上文件
2006/10/09 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
python使用cookielib库示例分享
2014/03/03 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS