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 相关文章推荐
XRegExp 0.2: Now With Named Capture
Nov 30 Javascript
jQuery 白痴级入门教程
Nov 11 Javascript
Javascript 复制数组实现代码
Nov 26 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
计算新浪Weibo消息长度(还可以输入119字)
Jul 02 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
Apr 27 Javascript
JS实现移动端实时监听输入框变化的实例代码
Apr 12 Javascript
令按钮悬浮在(手机)页面底部的实现方法
May 02 Javascript
JS图片轮播与索引变色功能实例详解
Jul 06 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 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
改变Apache端口等配置修改方法
2008/06/05 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
python结合API实现即时天气信息
2016/01/19 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
wxPython实现分隔窗口
2019/11/19 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
2014幼儿园教师个人工作总结
2014/11/08 职场文书
亮剑精神观后感
2015/06/05 职场文书