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 相关文章推荐
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
Dec 26 Javascript
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
前端轻量级MVC框架CanJS详解
Sep 26 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
vue组件之Alert的实现代码
Oct 17 Javascript
Vue的事件响应式进度条组件实例详解
Feb 04 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
Aug 02 Javascript
微信小程序开发中var that =this的用法详解
Jan 18 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
虫族 ZERG 概述
2020/03/14 星际争霸
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
js里的prototype使用示例
2010/11/19 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
ES6的新特性概览
2016/03/10 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
django修改models重建数据库的操作
2020/03/31 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
财务人员求职自荐书范文
2014/02/10 职场文书
毕业生找工作求职信
2014/08/05 职场文书
学习十八大的心得体会
2014/09/01 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
小学课改工作总结
2015/08/13 职场文书