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 相关文章推荐
用dom+xhtml+css制作的一个相册效果代码打包下载
Jan 24 Javascript
Javascript 日期对象Date扩展方法
May 30 Javascript
javascript下判断一个元素是否存在的代码
Mar 05 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
Java中Timer的用法详解
Oct 21 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
基于jquery的on和click的区别详解
Jan 15 jQuery
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 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 删除数组元素
2009/01/16 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
jQuery最佳实践完整篇
2011/08/20 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python批量替换多文件字符串问题详解
2018/04/22 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
鉴定评语大全
2014/05/05 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
幼儿园感谢信
2015/01/21 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL