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 相关文章推荐
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
Javascript浅谈之引用类型
Dec 18 Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
JavaScript中绑定事件的三种方式及去除绑定
Nov 05 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 Javascript
学习node.js 断言的使用详解
Mar 18 Javascript
React中Ref 的使用方法详解
Apr 28 Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 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中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
python实现屏保计时器的示例代码
2018/08/08 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
饲料采购员岗位职责
2013/12/19 职场文书
学术会议邀请函范文
2014/01/22 职场文书
保密普查工作实施方案
2014/02/25 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
2014年三万活动总结
2014/04/26 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
小学重阳节活动总结
2015/03/24 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
教你用python实现12306余票查询
2021/06/30 Python
JavaScript函数柯里化
2021/11/07 Javascript