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 相关文章推荐
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
使用Vue开发一个实时性时间转换指令
Jan 17 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
Feb 08 Javascript
在vue2.0中引用element-ui组件库的方法
Jun 21 Javascript
150行Node.js实现的dns代理工具
Aug 02 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
vue-property-decorator用法详解
Dec 12 Javascript
前端 javascript 实现文件下载的示例
Nov 24 Javascript
JavaScript canvas实现雨滴特效
Jan 10 Javascript
Node.js实现断点续传
Jun 23 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 imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
深入理解python函数递归和生成器
2016/06/06 Python
Python中进程和线程的区别详解
2017/10/29 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
大学生家政服务项目创业计划书
2014/01/30 职场文书
政治学求职信
2014/06/03 职场文书
十佳家长事迹材料
2014/08/26 职场文书
2014年女职工工作总结
2014/11/27 职场文书