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.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
菜鸟javascript基础整理1
Dec 06 Javascript
jquery实现pager控件示例
Apr 09 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 Javascript
详解Jquery Easyui的验证扩展
Jan 09 Javascript
JavaScript实现类似淘宝的购物车效果
Mar 16 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
angular2组件中定时刷新并清除定时器的实例讲解
Aug 31 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
ADODB类使用
2006/11/25 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
Python显示进度条的方法
2014/09/20 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
详解python中@的用法
2019/03/27 Python
python os.fork() 循环输出方法
2019/08/08 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
教师自荐信
2013/12/10 职场文书
小学英语教学反思
2014/01/30 职场文书
体育活动总结范文
2014/05/04 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
各国货币符号大全
2022/02/17 杂记
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby
Python如何加载模型并查看网络
2022/07/15 Python