js实现textarea限制输入字数


Posted in Javascript onFebruary 13, 2017

实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)

textarea称文本域,又称文本区,即有滚动条的多行文本输入控件,在网页的提交表单中经常用到。与单行文本框text控件不同,它不能通过maxlength属性来限制字数,为此必须寻求其他方法来加以限制以达到预设的需求。

通常的做法就是使用#脚本语言来实现对textarea文本域的字数输入限制,简单而实用。假设我们有一个id为 txta1 的textarea文本区,我们可以通过以下代码限制它的键盘输入字数为10个字(汉字或其他小角字符):

<script language="#" type="text/ecmascript"> 
window.onload = function() 
{ 
document.getElementById('txta1').onkeydown = function() 
{ 
 if(this.value.length >= 10) 
  event.returnValue = false; 
} 
} 
</script>

它的原理是通过对keydown(键盘键位按下)事件对指定id号的文本区进行监测,可以想象,它只能限制键盘输入,如果用户通过鼠标右键粘贴剪切板中的文本,它无法控制字数。

通过键盘输入,以上文本区只能输入10个字。但是,我们的目的并没有达到!请随便复制一些文本,试着用鼠标右键粘贴,看看发生了什么。

你可以在网上找到类似上述的其他JS脚本,它们不管多么优秀,其原理都是一样的,通过对keydown、keyup或keypress之类的键盘键位操作事件来监控文本区的输入,无法防止鼠标右键的粘贴,为此,如果一定要真正地限制textarea的字数,我们还得为网页加另一把锁——禁用鼠标右键,这无疑得付出额外的开销,同时也可能是网页制作者不一定愿意做的。其实,还有一个更简单的方法,使用onpropertychange属性。

onpropertychange可以用来判断预定元素的value值,当元素的value值发生变化时判断事件就会被触发,仅关心被监测元素的value值,避开了输入的来源,从而可以比较理想地达成我们的限制字数这一目的。它属于JS范畴,可以在表单方框区代表中嵌套使用,以下是代码和效果样式,可以像上面那样测试输入,你会发现它真正达到目的:不管用什么方式输入,它只能输入100个字(汉字或其他小解符号):

代码:

<textarea onpropertychange="if(value.length>100) value=value.substr(0,100)" class="smallArea" cols="60" name="txta" rows="8"></textarea>

当然,为了更为保险,处理表单数据的后台脚本程序还应该对提交来的数据进行再一次的检测,如果字数超出预设的数量则进行相应处理,这样才达到真正限制字数的目的。(完)

另外一种方法实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)

<script> 
function check() { 
var regC = /[^ -~]+/g; 
var regE = /\D+/g; 
var str = t1.value; 
if (regC.test(str)){ 
 t1.value = t1.value.substr(0,10); 
} 
if(regE.test(str)){ 
 t1.value = t1.value.substr(0,20); 
} 
} 
</script> 
<textarea maxlength="10" id="t1" onkeyup="check();"> 
</textarea>

还有一种方式:

function textCounter(field, maxlimit) { 
if (field.value.length > maxlimit){ 
field.value = field.value.substring(0, maxlimit); 
}else{ 
document.upbook.remLen.value = maxlimit - field.value.length; 
} 
} 
<textarea name=words cols=19 rows=5 class=input1 onPropertyChange= "textCounter(upbook.words, 50) "> textarea>

剩余字数:

<input name=remLen type=text id= "remLen " style= "background-color: #D4D0C8; border: 0; color: red " value=50 size=3 maxlength=3 readonly>
function LimitTextArea(field){ 
 maxlimit=200; 
 if (field.value.length > maxlimit) 
  field.value = field.value.substring(0, maxlimit); 
  
 }
<textarea cols=50 rows=10 name="comment" id="commentarea" onKeyDown="LimitTextArea(this)" onKeyUp="LimitTextArea(this)" onkeypress="LimitTextArea(this)" ></textarea>

title="The textarea width must less than 300 characters." 放在textarea 里面提示输入最大字节数。

例如:

<textarea title="The textarea width must less than 300 characters." cols=50 rows=10 name="comment" id="commentarea" onKeyDown="LimitTextArea(this)" onKeyUp="LimitTextArea(this)" onkeypress="LimitTextArea(this)" ></textarea>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
网页图片延时加载的js代码
Apr 22 Javascript
JavaScript中的稀疏数组与密集数组[译]
Sep 17 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
javascript检测两个数组是否相似
May 19 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
react中的ajax封装实例详解
Oct 17 Javascript
angular4实现tab栏切换的方法示例
Oct 21 Javascript
VUE基于NUXT的SSR 服务端渲染
Nov 30 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
Canvas实现动态的雪花效果
Feb 13 #Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
Feb 13 #Javascript
Bootstrap选项卡学习笔记分享
Feb 13 #Javascript
jQuery Ajax全解析
Feb 13 #Javascript
jQuery中 bind的用法简单介绍
Feb 13 #Javascript
jquery实现轮播图效果
Feb 13 #Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 #Javascript
You might like
PHP多线程之内部多线程实例分析
2015/03/09 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
javascript 解析url的search方法
2010/02/09 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
详解jQuery选择器
2016/12/21 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
python回调函数用法实例分析
2015/05/09 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
python中的二维列表实例详解
2018/06/19 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
python基于property()函数定义属性
2020/01/22 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
《一件运动衫》教学反思
2014/02/19 职场文书
职工小家建设活动方案
2014/08/25 职场文书
医学检验专业自荐信
2014/09/18 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
个人买房协议书范本
2014/10/06 职场文书
小学入学感言
2015/08/01 职场文书
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL
Python如何使用循环结构和分支结构
2022/04/13 Python
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis