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 相关文章推荐
同一个表单 根据要求递交到不同页面的实现方法小结
Aug 05 Javascript
javascript 年月日联动实现核心代码
Dec 21 Javascript
jqTransform form表单美化插件使用方法
Jul 05 Javascript
在页面加载完成后通过jquery给多个span赋值
May 21 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
JavaScript对象数组排序实例方法浅析
Jun 15 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
jquery实现tab键进行选择后enter键触发click行为
Mar 29 jQuery
基于node.js之调试器详解
Aug 22 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
Angular Excel 导入与导出的实现代码
Apr 17 Javascript
vue实现表格过滤功能
Sep 27 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下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
详解JS预解析原理
2020/06/16 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python实现井字棋游戏
2020/03/30 Python
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
实习生自我鉴定
2013/12/12 职场文书
24岁生日感言
2014/01/13 职场文书
代理商会议邀请函
2014/01/27 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
借款协议书
2014/09/16 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
西安大雁塔导游词
2015/02/10 职场文书
走进毛泽东观后感
2015/06/04 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server