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 attachEvent传递参数的办法
Dec 14 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
js子页面获取父页面数据示例
May 15 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
js生成随机数的方法实例
Oct 16 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
BootStrap的双日历时间控件使用
Jul 25 Javascript
微信小程序实现表单校验功能
Mar 30 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
vue a标签点击实现赋值方式
Sep 07 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
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
JavaScript 常用函数
2009/12/30 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
Python获取任意xml节点值的方法
2015/05/05 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
python实现最短路径的实例方法
2020/07/19 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
成本会计实训报告
2014/11/05 职场文书
2014年保密工作总结
2014/11/22 职场文书
北京英语导游词
2015/02/12 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
Python正则表达式中flags参数的实例详解
2022/04/01 Python
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android