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与浏览器兼容性说明
Oct 25 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
jQuery多级弹出菜单插件ZoneMenu
Dec 18 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 Javascript
javascript中闭包概念与用法深入理解
Dec 15 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
vue + vuex todolist的实现示例代码
Mar 09 Javascript
详解使用mpvue开发github小程序总结
Jul 25 Javascript
javascript Canvas动态粒子连线
Jan 01 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
PHP静态文件生成类实例
2014/11/29 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
jquery 学习之二 属性(类)
2010/11/25 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
vue中实现回车键登录功能
2020/02/19 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python内建数据结构详解
2016/02/03 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
Python callable内置函数原理解析
2020/03/05 Python
python中可以声明变量类型吗
2020/06/18 Python
你常见到的runtime exception
2016/09/05 面试题
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
教师节倡议书
2014/08/30 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
详解Flask开发技巧之异常处理
2021/06/15 Python