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 相关文章推荐
javascript 进阶篇1 正则表达式,cookie管理,userData
Mar 14 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 Javascript
jQuery队列操作方法实例
Jun 11 Javascript
jQuery预加载图片常用方法
Jun 15 Javascript
jQuery实现的可编辑表格完整实例
Jun 20 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
Aug 08 Javascript
JavaScript性能优化总结之加载与执行
Aug 11 Javascript
JS实现的手机端精简幻灯片效果
Sep 05 Javascript
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
微信小程序云函数使用mysql数据库过程详解
Aug 07 Javascript
微信小程序实现手势滑动卡片效果
Aug 26 Javascript
Vue.js实现可编辑的表格
Dec 11 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
PHP解析RSS的方法
2015/03/05 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
用js实现in_array的方法
2013/11/05 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
Python之re操作方法(详解)
2017/06/14 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python微信公众号开发简单流程实现
2020/03/09 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
基于Python正确读取资源文件
2020/09/14 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
军训新闻稿范文
2015/07/17 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
解读Vue组件注册方式
2021/05/15 Vue.js
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL