[转]TextArea设置MaxLength属性最大输入值的js代码

标准的DHTML文档中TEXTAREA的MAXLENGTH属性默认情况下不起作用,只有当事件发生时才起作用
如下:http://spiderscript.net/site/spiderscript/examples/ex_textarea_maxlength.asp
但TEXT中有且起作用<input type="text" maxlength="20">,
那么在TEXTAREA中怎么实现输入内容不能超过多少个字符呢。 

方法1、如果只需要截取多少个字符的内容,则可以: 

复制代码 代码如下:

<textarea onkeyup="this.value = this.value.slice(0, 80)"></textarea> 

或 

复制代码 代码如下:

<textarea onkeyup="this.value = this.value.substring(0, 80)"></textarea> 

方法2、 

复制代码 代码如下:

<script type="text/javascript">
function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}
</script>
<textarea maxlength="40" onkeyup="return ismaxlength(this)"></textarea> 

这个方法采用截断法,输入到最后一个字符的时候如果再输入则会显示光标闪烁。但可以解决使用CTRL+C复制过来的长度限制问题,但如果用鼠标复制过来的不还是不行。 

方法3、这个方法直接判断输入的长度 

复制代码 代码如下:

<script language="javascript" type="text/javascript">
<!--
function imposeMaxLength(Object, MaxLen)
{
return (Object.value.length <MaxLen);
}
-->
</script>
<textarea name="myName" onkeypress="return imposeMaxLength(this, 15);" ></textarea> 

当输入内容大于15时因为返回为false所以这个实现不会显示光标闪烁的问题,但没有解决复制过来的长度限制问题即复制过来的内容可以超过最大长度限制
return (Object.value.length <=MaxLen);但我测试发现当输入字节数=maxlen时还可以输入一个字符,所以我改成 return (Object.value.length <MaxLen); 

方法4、其实方法4是方法2与方法3的基础上进一步优化。客观的说方法2与方法3都只做了一部分工作 

复制代码 代码如下:

<mce:script language="javascript" type="text/javascript"><!--
function textlen(x,y){
var thelength = x.value.length;
window.status=thelength+‘ of ‘+y+‘ maximum characters.‘;
}
function maxtext(x,y){
tempstr = x.value
if(tempstr.length>y){
x.value = tempstr.substring(0,y);
}
textlen(x,y);
}
// --></mce:script>
<form name="myform">
<textarea name="mytextarea"
cols="45"
rows="3"
wrap="virtual"
onkeypress="return(this.value.length<20)"
onkeydown="textlen(this,20)"
onkeyup="textlen(this,20)"
onblur="maxtext(this,20)"
> 

上面的方法在原来的基础上加了onblur事件,这主要用于处理当用户不是采用输入而是通过复制粘贴方法来完成文本的转入时的问题。实际就是方法2与方法3的结合版。 以下是我为TextArea增加并利用maxlength属性及结合上例的结果:<html><head><script type="text/javascript">function ismaxlength(obj){var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""if (obj.getAttribute && obj.value.length>mlength)alert(‘该文本框允许输入最大长度为‘+mlength+"个字符,超出内容将会被截断")obj.value=obj.value.substring(0,mlength)}function imposeMaxLength(obj){ var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "" return (obj.value.length <mlength);}</script></head><body><form name="myform"> <textarea maxlength="5" onkeypress="return imposeMaxLength(this)" onblur="ismaxlength(this)"></textarea></form></body></html> 

Javascript代码
--------------------------------------------------------------------------------------------- 

复制代码 代码如下:

function SetTextAreaMaxLength(controlId, length) {    // JScript File for TextArea     // Keep user from entering more than maxLength characters     function doKeypress(control, length) {        maxLength = length;        value = control.value;        if (maxLength && value.length > maxLength - 1) {            event.returnValue = false;            maxLength = parseInt(maxLength);        }    }    // Cancel default behavior     function doBeforePaste(control, length) {        maxLength = length;        if (maxLength) {            event.returnValue = false;        }    }    // Cancel default behavior and create a new paste routine     function doPaste(control, length) {        maxLength = length;        value = control.value;        if (maxLength) {            event.returnValue = false;            maxLength = parseInt(maxLength);            var oTR = control.document.selection.createRange();            var iInsertLength = maxLength - value.length + oTR.text.length;            var sData = window.clipboardData.getData("Text").substr(0, iInsertLength);            oTR.text = sData;        }    }    function doDragenter(control, length) {        maxLength = length;        value = control.value;        if (maxLength) {            event.returnValue = false;        }    }    function addEvent(elm, evType, fn, useCapture) {        if (elm.addEventListener) {            elm.addEventListener(evType, fn, useCapture);            return true;        } else if (elm.attachEvent) {            var r = elm.attachEvent(‘on‘ + evType, fn);            return r;        } else {            elm[‘on‘ + evType] = fn;        }    }    function AttacheventTextAreaBeforePaste(obj, length) {        return function() {            doBeforePaste(obj, length)        }    }    function AttacheventTextAreaPaste(obj, length) {        return function() {            doPaste(obj, length)        }    }    function AttacheventTextAreaKeyPress(obj, length) {        return function() {            doKeypress(obj, length)        }    }    function AttacheventTextAreaDragEnter(obj, length) {        return function() {            doDragenter(obj, length);        }    }    var obj = document.getElementById(controlId);    addEvent(obj, ‘keypress‘, AttacheventTextAreaKeyPress(obj, length), null);    addEvent(obj, ‘beforepaste‘, AttacheventTextAreaBeforePaste(obj, length), null);    addEvent(obj, ‘paste‘, AttacheventTextAreaPaste(obj, length), null);    addEvent(obj, ‘dragenter‘, AttacheventTextAreaDragEnter(obj, length), null);}

-----------------------------------------------------------------------------------------------
HTML代码 

复制代码 代码如下:

<asp:TextBox ID="TextBoxAddress" runat="server" Width="200px"
TextMode="MultiLine" Height="113px" MaxLength="10"></asp:TextBox>
<script language="javascript" type="text/javascript">
SetTextAreaMaxLength(‘<%=TextBoxAddress.ClientID %>‘,10);
</script> 
时间: 2024-10-13 11:20:23

[转]TextArea设置MaxLength属性最大输入值的js代码的相关文章

根据对象的某一属性进行排序的js代码(如:name,age)

var data = [{ name: "jiang", age: 22 }, { name: "AAAAAAAAAAAAAA", age: 21 }, { name: "CCCCCCCCc", age: 25 }]; //定义一个比较器 function compare(propertyName) { return function(object1, object2) { var value1 = object1[propertyName];

解决IE下textarea不识别maxlength属性的问题

首先先看一个比较简单的处理办法,代码如下: $("textarea[maxlength]").keyup(function () { var area = $(this); var max = parseInt(area.attr("maxlength"), 10); //获取maxlength的值 if (max > 0) { if (area.val().length > max) { //textarea的文本长度大于maxlength area.

maxlength属性在textarea里奇怪的表现

HTML5给表单带来了很多改变,比如今天要说的maxlength,这个属性可以限制输入框输入的最大字字符数,更方便的是对于粘贴的内容也能够根据字符数自动截断. 最近就接到这要一个需求,限制用户最多输入600字(汉字和字母不区分),对于粘贴的内容也要能自动截断,输入600字后就无法输入. 第一时间想到了maxlength,基本满足需求,但还是有一些怪异的表现. 看下面的代码: <textarea name="text" id="text" maxlength=&

基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转

基于css3新属性transform,实现3d立方体的旋转 通过原生JS,点击事件,鼠标按下.鼠标抬起和鼠标移动事件,实现3d立方体的拖动旋转,并将旋转角度实时的反应至界面上显示 实现原理:通过获取鼠标点击屏幕时的坐标和鼠标移动时的坐标,来获得鼠标在X轴.Y轴移动的距离,将距离实时赋值给transform属性 从而通过改变transform:rotate属性值来达到3d立方体旋转的效果 HTML代码块: <body> <input type="button" clas

HTML &lt;input&gt; 标签的 maxlength 属性

前端的表单,需要进行验证. 结合JS表单验证框架,写了很多前端验证的代码. 其中,有这么一个需求:用户最多只能输入10个字符. 按照惯性,肯定是会去写JS表单验证了. 实际上,根本没有必要. HTML中的maxlength属性就可以很简单地解决这个问题. <input type="text" size="10" maxlength="10" /> 通过这个很简单的属性设置,用户能够输入的字符就是10,再多就输不进去了.

使用jQuery设置disabled属性与移除disabled属性

Readonly只针对input和textarea有效,而disabled对于所有的表单元素都有效,下面为大家介绍下使用jQuery设置disabled属性 表单中readOnly和disabled的区别: Readonly只针对input(text/ password)和textarea有效,而disabled对于所有的表单元素都有效,包括select,radio, checkbox, button等. 但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个

jQuery设置disabled属性

先比较下readOnly和disabled: readOnly 只针对input(text/ password)和textarea有效: disabled 对于所有的表单元素都有效,包括select,radio, checkbox, button等. 但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去(这种情况出现在我们将某个表单中的textarea元素设置为disabled或readonly,但是

今天碰到一个问题,怎么限制用户在固定宽度的input输入框里输入的长度,由此涉猎到了maxlength属性和size属性以及它们的区别。

最开始想首先要强制在一行,另外超出的隐藏.还有一个思路是把value的值的长度和框的长度怎么联系起来,具体怎么联系我也不知道. 在解决另外一个问题的时候,哥发给我的代码里无意中看见input有个maxlength属性,就查了这儿属性. 在W3school里说maxlength属性有两个最大值:85和55,这个属性用于type类型为text和password属性.具体为啥有两个最大值还不清楚,待查. maxlength和size的区别在于,如: maxlength="5",则input输

关于iso不兼容input框设置readonly属性后

苹果设备,对于输入框设置了readonly属性以后,还是会有光标显示.可以在input\textarea设置了readonly属性后,在script中增加:$('input[readonly]').on('focus', function() {$(this).trigger('blur');});就不在显示光标了.动态生成元素的点击事件$(document).on("click",'.class1,.class2,...',function(){})或$('.class1,.clas