JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】


Posted in Javascript onSeptember 26, 2017

本文实例讲述了JavaScript实现的仿新浪微博原生态输入字数即时检查功能。分享给大家供大家参考,具体如下:

边在文本框输入字符边对输入的字数进行检查本来不难的,但是由于其中有些函数的使用方式大家容易混乱,很容易导致整个结果搞来搞去也没有搞出来,也容易出Bugs,注意这里不能再使用length函数了,因为这个东西英文算一个字符,汉字也算一个字符,不符合数据传递的形式。也不能用OnChange事件了,这事件要光标离开为文本框才会触发,必须改成更加即时的OnKeyUp。

一、基本目标

如下图,完成一个仿新浪微博的,不用任何插件,纯Javascript无JQuery的带字数统计的输入框,如果超出字数则给出相应的提示。

英文算半个字,中文才算1个字。

JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】

二、基本布局

没什么好说的。主要是提示文字给一个ID=test,字数统计的地方因为时时变更,因此也要给出一个ID=wordLength,之后脚本处的inputTest函数,又文本框的onkeyup事件触发,同时把自己此刻的值传递过去。同时注意到,字数统计的地方之所以与新浪微博的部分相似,就是因为新浪微博那里用了Georgia字体,这字体显示的数字比较独特。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>输入字数检查</title>
</head>
<body>
<p id="test"></p>
<span><input type="text" onkeyup="inputTest(this.value)" placeholder="请在此输入" /></span><span id="wordLength" style="font-family:Georgia;">0/10</span>
</body>
</html>

三、核心脚本

<script>
//获取长度函数
//这里不能用封装好的方法,因为length方法,英文算一个字符,中文也算一个字符
function getStrLength(str){
  //传递一个字符串过来
  var mylen=0;
  //遍历这个字符串
  for(var i=0;i<str.length;i++){
    //如果字符串的第i个字符的Unicode码在0-128之间就是英文字符,应该算一个长度
    if(str.charCodeAt(i)>0&&str.charCodeAt(i)<128){
      mylen++;
    }else{
      //否则算两个长度
      mylen+=2;
    }
  }
  return mylen;
}
//输入当字符数变更就触发这个函数
function inputTest(value){
  //先调getStrLength用统计当前文本框中所含文本的值,因为getStrLength统计出来的东西是英文字符长度,所以要除以2,强行转换为整形
  //再补上/10替换wordLength中的文本,/应该被转义,否则在某些编译器中无法通过,例如Dreamwaver
  document.getElementById("wordLength").innerHTML=parseInt(getStrLength(value)/2)+"\/10";
  //如果超过10个字,20个字符
  if(parseInt(getStrLength(value))>20){
    //那么把警告内容显示出来,并把其中的颜色设置为红色,当然,你在HTML那里设置也可以
    document.getElementById("test").style.display="block";
    document.getElementById("test").innerHTML="太长,请修改至10字之内";
    document.getElementById("test").style.color="#ff0000";
  }
  else{
    //否则隐藏警告内容
    document.getElementById("test").innerHTML="";
    document.getElementById("test").style.display="none";
  }
}
</script>

PS:这里再为大家推荐2款功能相似的在线工具:

在线字数统计工具:
http://tools.3water.com/code/zishutongji

在线字符统计与编辑工具:
http://tools.3water.com/code/char_tongji

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
Nov 17 Javascript
php图像生成函数之间的区别分析
Dec 06 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 Javascript
如何使用pm2快速将项目部署到远程服务器
Mar 12 Javascript
详解vue 图片上传功能
Apr 30 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 10 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 #jQuery
Vue from-validate 表单验证的示例代码
Sep 26 #Javascript
微信小程序之蓝牙的链接
Sep 26 #Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 #jQuery
jQuery EasyUI开发技巧总结
Sep 26 #jQuery
jQuery 开发之EasyUI 添加数据的实例
Sep 26 #jQuery
微信小程序中post方法与get方法的封装
Sep 26 #Javascript
You might like
基于mysql的bbs设计(二)
2006/10/09 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
深入解析php中的foreach函数
2013/08/31 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
input 高级限制级用法
2009/03/26 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python匿名函数及应用示例
2019/04/09 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
护理专科毕业自荐信范文
2014/04/21 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript