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 radio 联动效果
Mar 04 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
Aug 21 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
Bootstrap页面标题Page Header的实现方法
Mar 22 Javascript
JS实现加载时锁定HTML页面元素的方法
Jun 24 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 Javascript
JS中Promise函数then的奥秘探究
Jul 30 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 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邮箱地址正则表达式验证
2015/11/13 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
如何用python 操作zookeeper
2020/12/28 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
放飞梦想演讲稿
2014/05/05 职场文书
党员承诺书格式
2014/05/21 职场文书
立春观后感
2015/06/18 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android