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 相关文章推荐
jquery tab插件制作实现代码
Jun 22 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
Aug 30 Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 Javascript
浅谈json取值(对象和数组)
Jun 24 Javascript
jQuery绑定事件的四种方式介绍
Oct 31 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
跨域请求两种方法 jsonp和cors的实现
Nov 11 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
PHP的基本常识小结
2013/07/05 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
详解php中 === 的使用
2016/10/24 PHP
php实现留言板功能
2017/03/05 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
详解Python中的array数组模块相关使用
2016/07/05 Python
Python中functools模块函数解析
2017/03/12 Python
Python中常用信号signal类型实例
2018/01/25 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
如何用python整理附件
2018/05/13 Python
Python对象属性自动更新操作示例
2018/06/15 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
Python实现像awk一样分割字符串
2020/09/15 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
数组越界问题
2015/10/21 面试题
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
抗洪抢险事迹材料
2014/05/06 职场文书
师德先进个人材料
2014/12/20 职场文书
同事去世追悼词
2015/06/23 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
Python利用zhdate模块实现农历日期处理
2022/03/31 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python