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和html5的7款个性化地图插件
Nov 17 Javascript
JavaScript事件类型中UI事件详解
Jan 14 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
js微信分享实现代码
Oct 11 Javascript
js实现Tab选项卡切换效果
Jul 17 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
Java设计中的Builder模式的介绍
Mar 22 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
javascript中UMD规范的代码推演
Aug 29 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
使用js实现一个简单的滚动条过程解析
Sep 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
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP中的事务使用实例
2015/05/26 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python绘制简单彩虹图
2018/11/19 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
创立科技Java面试题
2015/11/29 面试题
医学毕业生自荐信
2013/10/11 职场文书
社区娱乐活动方案
2014/08/21 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
办公室文员岗位职责
2015/02/04 职场文书
西游记读书笔记
2015/06/25 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
python 中yaml文件用法大全
2021/07/04 Python
详解Go语言中Get/Post请求测试
2022/06/01 Golang
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS