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 相关文章推荐
jQuery调用ajax请求的常见方法汇总
Mar 24 Javascript
解决node.js安装包失败的几种方法
Sep 02 Javascript
jQuery判断是否存在滚动条的简单方法
Sep 17 Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
Mar 02 Javascript
Vue.js获取被选择的option的value和text值方法
Aug 24 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
VUE路由动态加载实例代码讲解
Aug 26 Javascript
vue动态绘制四分之三圆环图效果
Sep 03 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
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
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
基于jquery实现五星好评
2017/11/18 jQuery
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
Python中常见的异常总结
2018/02/20 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
python 绘制正态曲线的示例
2020/09/24 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
职业培训师职业生涯规划
2014/02/18 职场文书
《金子》教学反思
2014/04/13 职场文书
物资采购方案
2014/06/12 职场文书
学前班学生评语
2014/12/29 职场文书
党校个人总结
2015/03/04 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
MYSQL如何查看操作日志详解
2022/05/30 MySQL
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript