TextArea 控件的最大长度问题(js json) |
如果只是单纯地想限制 textarea 中的字数,不想写太多的话,可用: <textarea onkeyup="this.value = this.value.slice(0, 80)"></textarea> 或 <textarea onkeyup="this.value = this.value.substring(0, 80)"></textarea> 在 textarea 的 onkeyup 中检查字数之方法: 复制代码 代码如下: <script language="javascript" type="text/javascript"> function DjCheckMaxlength(oInObj) { var iMaxLen = parseInt(oInObj.getAttribute(maxlength)); var iCurLen = oInObj.value.length; if ( oInObj.getAttribute && iCurLen > iMaxLen ) { oInObj.value = oInObj.value.substring(0, iMaxLen); } } //@ END OF DjCheckMaxlength() </script> <textarea maxlength="80" onkeyup="return DjCheckMaxlength(this);"></textarea> o 设定好自动去检查所有的 textarea 之方法: 复制代码 代码如下: <head> <script language="javascript" type="text/javascript"> function DjTextArea_AddMaxlengthAttr() { var aX = document.getElementsByTagName(textarea); for ( var iI = 0; aX.length > iI; iI++ ) { if ( aX[iI].getAttribute(maxlength) ) { aX[iI].onkeyup = aX[iI].onchange = DjTextArea_CheckMaxlength; } } } //@ END OF DjTextArea_AddMaxlengthAttr() function DjTextArea_CheckMaxlength() { var iMaxLen = parseInt(this.getAttribute(maxlength)); var iCurLen = this.value.length; if ( this.getAttribute && iCurLen > iMaxLen ) { this.value = this.value.substring(0, iMaxLen); } } //@ END OF DjTextArea_CheckMaxlength() </script> </head> <body onload="DjTextArea_AddMaxlengthAttr();"> 复制代码 代码如下: var Inputs = { OnIntegerOnly: function() { var k = System.isIE ? event.keyCode : event.which; if(event.ctrlKey || event.ctrlAlt || event.shiftKey) { Inputs.DisableInput(event); return; } if ( ( k < 48 || k > 57 ) && 8 != k && 9 != k && 46 != k && 37 != k && 39 != k && 16 != k && 36 != k && 35 != k && 17 != k && 13 != k && ( k < 96 || k > 105 ) ) { Inputs.DisableInput(event); } return k; }, OnDecimalOnly: function() { var k = System.isIE ? event.keyCode : event.which; if(event.ctrlKey || event.ctrlAlt || event.shiftKey) { Inputs.DisableInput(event); return; } if( ( k < 48 || k > 57 ) && 8 != k && 9 != k && 46 != k && 37 != k && 39 != k && 16 != k && 36 != k && 35 != k && 17 != k && 13 != k && 190 != k && 110 != k && ( k < 96 || k > 105 ) ) { Inputs.DisableInput(event); } return k; }, OnAsciiOnly: function() { var k = System.isIE ? event.keyCode : event.which; if ( ( k < 97 || k > 122 ) && ( k < 65 || k > 90 ) && ( k < 48 || k > 57 ) && 8 != k && 9 != k && 46 != k && 37 != k && 39 != k && 16 != k && 36 != k && 35 != k && 17 != k && 13 != k && 189 != k && 187 != k ) { Inputs.DisableInput(event); } return k; }, DisableInput: function(event) { if(System.isIE) event.returnValue = false; else event.preventDefault(); }, AddOnPos: function(obj, charvalue) { //obj代表要插入字符的输入框 //value代表要插入的字符 obj.focus(); var r = document.selection.createRange(); var ctr = obj.createTextRange(); var i; var s = obj.value; //注释掉的这种方法只能用在单行的输入框input内 //对多行输入框textarea无效 //r.setEndPoint("StartToStart", ctr); //i = r.text.length; //取到光标位置----Start---- var ivalue = "&^asdjfls2FFFF325%$^&"; r.text = ivalue; i = obj.value.indexOf(ivalue); r.moveStart("character", -ivalue.length); r.text = ""; //取到光标位置----End---- //插入字符 obj.value = s.substr(0,i) + charvalue + s.substr(i,s.length); ctr.collapse(true); ctr.moveStart("character", i + charvalue.length); ctr.select(); }, MaxLength: function() { var _this = event.srcElement; var iMaxLen = parseInt(_this.getAttribute(maxlength)); switch(event.type) { case beforepaste: { event.returnValue = false; } break; case paste: { var iTxtLen = _this.value.lenUTF8(); var txtCbd = window.clipboardData.getData("Text"); var iCbdLen = txtCbd.lenUTF8(); if((iMaxLen - iTxtLen) <= iCbdLen) { var iSurplusLen = iMaxLen - iTxtLen; var subStr = txtCbd.substr(0, iSurplusLen); var insertStr = ; for(var i = 0; i < subStr.length; i++) { var chr = subStr.substr(i, 1); if(iSurplusLen >= chr.lenUTF8()) { insertStr += chr; iSurplusLen -= chr.lenUTF8(); } } Inputs.AddOnPos(_this, insertStr); //_this.style.backgroundColor = red; //System.setTimeout(Inputs.ColorTips, 500, _this); event.returnValue = false; event.srcElement.style.imeMode = disabled; } else { event.returnValue = true; event.srcElement.style.imeMode = auto; } } break; case keypress: { var iTxtLen = _this.value.lenUTF8(); if(iMaxLen <= iTxtLen) { while(_this.value.lenUTF8() > iMaxLen) { _this.value = _this.value.substr(0, _this.value.length - 1); } Inputs.DisableInput(event); if(disabled != event.srcElement.style.imeMode) { event.srcElement.style.imeMode = disabled; } } else { if(auto != event.srcElement.style.imeMode) { event.srcElement.style.imeMode = auto; } } } break; case keyup: { var k = System.isIE ? event.keyCode : event.which; if (8 != k && 9 != k && 46 != k && 37 != k && 39 != k && 16 != k && 36 != k && 35 != k && 17 != k && 13 != k && 189 != k && 187 != k ) { if(_this.getAttribute) { _this.fireEvent(onkeypress); } } } break; case keydown: { var k = System.isIE ? event.keyCode : event.which; if (8 != k && 9 != k && 46 != k && 37 != k && 39 != k && 16 != k && 36 != k && 35 != k && 17 != k && 13 != k && 189 != k && 187 != k ) { var iTxtLen = _this.value.lenUTF8(); if(iMaxLen <= iTxtLen) { Inputs.DisableInput(event); } } } break; } }, TextAreaMaxLength: function() { var aX = document.getElementsByTagName(textarea); for(var i = 0; i < aX.length; i++) { if(aX[i].getAttribute(maxlength)) { aX[i].detachEvent(onbeforepaste, Inputs.MaxLength); aX[i].detachEvent(onpaste, Inputs.MaxLength); aX[i].detachEvent(onkeypress, Inputs.MaxLength); aX[i].detachEvent(onkeyup, Inputs.MaxLength); aX[i].detachEvent(onkeydown, Inputs.MaxLength); aX[i].attachEvent(onbeforepaste, Inputs.MaxLength); aX[i].attachEvent(onpaste, Inputs.MaxLength); aX[i].attachEvent(onkeypress, Inputs.MaxLength); aX[i].attachEvent(onkeyup, Inputs.MaxLength); aX[i].attachEvent(onkeydown, Inputs.MaxLength); /* var res = zh-cn == window.navigator.systemLanguage ? 最大长度: : Maximum length for: ; if( == aX[i].title) aX[i].title = res + aX[i].getAttribute(maxlength); */ } } }, TextBoxMaxLength: function() { var aX = document.getElementsByTagName(input); for(var i = 0; i < aX.length; i++) { var maxLen = aX[i].getAttribute(maxlength); if(text == aX[i].type && null != maxLen && != maxLen && undefined != maxLen && 2147483647 > parseInt(maxLen) && == aX[i].title) { aX[i].detachEvent(onbeforepaste, Inputs.MaxLength); aX[i].detachEvent(onpaste, Inputs.MaxLength); aX[i].detachEvent(onkeypress, Inputs.MaxLength); aX[i].detachEvent(onkeyup, Inputs.MaxLength); aX[i].attachEvent(onbeforepaste, Inputs.MaxLength); aX[i].attachEvent(onpaste, Inputs.MaxLength); aX[i].attachEvent(onkeypress, Inputs.MaxLength); aX[i].attachEvent(onkeyup, Inputs.MaxLength); /* var res = zh-cn == window.navigator.systemLanguage ? 最大长度: : Maximum length for: ; aX[i].title = res + aX[i].getAttribute(maxlength); */ } } } } Tools.Inputs = Inputs; window.attachEvent(onload, Tools.Inputs.TextAreaMaxLength); window.attachEvent(onload, Tools.Inputs.TextBoxMaxLength); |