jQuery计算文本框字数及限制文本框字数的方法


Posted in Javascript onMarch 01, 2016

一个中文算两个,一个符号或数字,英文,算一个。(如果是规定140个字,乘以2,那么就是280个)。需要用到Math.ceil方法,因为最后还是要除以2来还原显示给用户的字数;

jQuery计算文本框字数及限制文本框字数的方法

$(function(){ 
var $tex = $(".tex"); 
var $but = $(".but"); 
var ie = jQuery.support.htmlSerialize; 
var str = 0; 
var abcnum = 0; 
var maxNum = 280; 
var texts= 0; 
var num = 0; 
var sets = null; 
$tex.val(""); 
//顶部的提示文字 
$tex.focus(function(){ 
if($tex.val()==""){ 
$("p").html("您还可以输入的字数<span>140</span>"); 
} 
}) 
$tex.blur(function(){ 
if($tex.val() == ""){ 
$("p").html("请在下面输入您的文字:"); 
} 
}) 
//文本框字数计算和提示改变 
if(ie){ 
$tex[0].oninput = changeNum; 
}else{ 
$tex[0].onpropertychange = changeNum; 
} 
function changeNum(){ 
//汉字的个数 
str = ($tex.val().replace(/\w/g,"")).length; 
//非汉字的个数 
abcnum = $tex.val().length-str; 
total = str*2+abcnum; 
if(str*2+abcnum<maxNum || str*2+abcnum == maxNum){ 
$but.removeClass() 
$but.addClass("but"); 
texts =Math.ceil((maxNum - (str*2+abcnum))/2); 
$("p").html("您还可以输入的字数<span>"+texts+"</span>").children().css({"color":"blue"}); 
}else if(str*2+abcnum>maxNum){ 
$but.removeClass("") 
$but.addClass("grey"); 
texts =Math.ceil(((str*2+abcnum)-maxNum)/2); 
$("p").html("您输入的字数超过了<span>"+texts+"</span>").children("span").css({"color":"red"}); 
} 
} 
//按钮点击 
$but.click(function(){ 
if($(this).is(".grey")){ 
sets = setInterval(flash,100); 
$tex.addClass("textColor") 
} 
function flash(){ 
num++; 
if(num == 4){ 
clearInterval(sets); 
} 
if(num%2 == 1){ 
$tex.addClass("textColor") 
}else{ 
$tex.removeClass("textColor") 
} 
} 
}) 
})

一、功能:

用户边输入计算同时进行,告诉用户还剩余多少可输入的字数;

当超过规定的字数后,点击确定,会让输入框闪动

二、功能分析

重点是用什么事件?

标准浏览器用oninput,而IE则使用onpropertychange ,这两个事件的发生条件,是文本框的值发生改变。

字数的计算。

一个中文算两个,一个符号或数字,英文,算一个。(如果是规定140个字,乘以2,那么就是280个)。需要用到Math.ceil方法,因为最后还是要除以2来还原显示给用户的字数;

闪动背景色

这里用到了模运算,因为是重复的动作,第一次有颜色,第二次没有颜色,这样重复的动作,就有闪动效果.

因为肉眼要看到这二次有颜色和无颜色的效果,所以需要用到延时,setTimeout和setInterval. 这里用到的是setInterval,因为要重复动作。

下面一段代码给大家介绍用jQuery实现限制输入字数的文本框。

1.导入外部.js文件:

<script src="http://static.l99.com/js/jquery/jquery-1.2.6.pack.js" type="text/javascript"></script>

2.在<body>标签中加入如下代码:

<body>
还可以输入<span id="word">140</span>个字<br />
<textarea id="txt" name="" cols="" rows=""></textarea>
<script language="javascript" type="text/javascript">
$("#txt").keyup(function(){ 
if($("#txt").val().length > 140){
$("#txt").val( $("#txt").val().substring(0,140) );
}
$("#word").text( 140 - $("#txt").val().length ) ;
});
</script>
</body>

3.如果页面加载时输入框中有默认文本,那么要在页面加载时运行如下jQuery代码,方能正确显示:

$("#word").text( 140 - $("#txt").val().length ) ;
Javascript 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
用js判断浏览器是否是IE的比较好的办法
May 08 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
JavaScript构造函数详解
Dec 27 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
Aug 01 Javascript
Vue-Router进阶之滚动行为详解
Sep 13 Javascript
vue中v-model的应用及使用详解
Jun 27 Javascript
JS中使用new Option()实现时间联动效果
Dec 10 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
jQuery xml字符串的解析、读取及查找方法
Mar 01 #Javascript
原生javascript实现解析XML文档与字符串
Mar 01 #Javascript
JS创建对象几种不同方法详解
Mar 01 #Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 #Javascript
基于JavaScript实现文字超出部分隐藏
Feb 29 #Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 #Javascript
ClearTimeout消除闪动实例代码
Feb 29 #Javascript
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
两种php去除二维数组的重复项方法
2015/11/04 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
Python函数嵌套实例
2014/09/23 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
厨师长岗位职责
2014/03/02 职场文书
民政局个人整改措施
2014/09/24 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript