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 相关文章推荐
js添加select下默认的option的value和text的方法
Oct 19 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 Javascript
ES6实现的遍历目录函数示例
Apr 07 Javascript
Jquery-data的三种用法
Apr 18 jQuery
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
微信小程序swiper使用网络图片不显示问题解决
Dec 13 Javascript
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
JS数组的常用10种方法详解
May 08 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 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 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
深入Python解释器理解Python中的字节码
2015/04/01 Python
浅析Python中的序列化存储的方法
2015/04/28 Python
Django实现快速分页的方法实例
2017/10/22 Python
python 切换root 执行命令的方法
2019/01/19 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
药学专业学生的自我评价分享
2014/02/06 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
海弦WR-800F
2022/04/05 无线电
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android