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 继承详解 第一篇
Aug 30 Javascript
传智播客学习之JavaScript基础篇
Nov 13 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
了解VUE的render函数的使用
Jun 08 Javascript
js的函数的按值传递参数(实例讲解)
Nov 16 Javascript
Vue实现web分页组件详解
Nov 28 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
图解JS原型和原型链实现原理
Sep 15 Javascript
jQuery实现简单轮播图效果
Dec 27 jQuery
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
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
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
php链式操作的实现方式分析
2019/08/12 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
面包屑导航详解
2017/12/07 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Python入门教程之if语句的用法
2015/05/14 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python使用代理ip访问网站的实例
2018/05/07 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
迟到检讨书300字
2014/02/14 职场文书
搞笑征婚广告词
2014/03/17 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
总经理人事任命书
2014/06/05 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
2014年领班工作总结
2014/11/25 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
javascript Number 与 Math对象的介绍
2021/11/17 Javascript