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保存当前路径(cookies记录)
Dec 14 Javascript
javascript确认框的三种使用方法
Dec 17 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
原生JavaScript实现异步多文件上传
Dec 02 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
基于JSON数据格式详解
Aug 31 Javascript
关于redux-saga中take使用方法详解
Feb 27 Javascript
微信小程序适配iphoneX的实现方法
Sep 18 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 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
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python的argparse库使用详解
2018/10/09 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
python修改FTP服务器上的文件名
2019/09/11 Python
python之yield和Generator深入解析
2019/09/18 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
护理个人求职信范文
2014/01/08 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
一年级小学生评语
2014/04/22 职场文书
反邪教学习心得体会
2016/01/15 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书