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 相关文章推荐
使两个iframe的高度与内容自适应,且相等
Nov 20 Javascript
JavaScript 对话框和状态栏使用说明
Oct 25 Javascript
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
javascript 获取元素样式必杀技
May 04 Javascript
jquery中EasyUI使用技巧小结
Feb 10 Javascript
javascript格式化json显示实例分析
Apr 21 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
Apr 19 Javascript
jquery插件懒加载的示例
Oct 24 jQuery
微信小程序中使用vant框架的具体步骤
Feb 18 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
浅析php学习的路线图
2013/07/10 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
python SOCKET编程基础入门
2021/02/27 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
python requests模块的使用示例
2021/04/07 Python
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
Python 中random 库的详细使用
2021/06/03 Python
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
mysql数据库隔离级别详解
2022/06/16 MySQL