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的getYear、getFullYear、getUTCFullYear异同分享
Nov 30 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
浅析javascript操作 cookie对象
Dec 26 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
AngularJS 路由详解和简单实例
Jul 28 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
Oct 11 Javascript
Node.js使用cookie保持登录的方法
May 11 Javascript
react native 文字轮播的实现示例
Jul 27 Javascript
vue 解决文本框被键盘遮住的问题
Nov 06 Javascript
分享Angular http interceptors 拦截器使用(推荐)
Nov 10 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
原生js实现简单轮播图
Oct 26 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 获取百度的热词数据的代码
2012/02/18 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python的动态重新封装的教程
2015/04/11 Python
介绍Python中的文档测试模块
2015/04/28 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
python dict如何定义
2020/09/02 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
质检部职责
2013/12/28 职场文书
师德师风建设方案
2014/05/08 职场文书
安全施工标语
2014/06/07 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
股权投资协议书
2016/03/23 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang