TextArea 控件的最大长度问题(js json)


Posted in Javascript onDecember 16, 2009

如果只是单纯地想限制 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);
Javascript 相关文章推荐
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
Nov 12 Javascript
详解JavaScript正则表达式之RegExp对象
Dec 13 Javascript
javascript事件模型介绍
May 31 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 Javascript
JavaScript使用Ajax上传文件的示例代码
Aug 10 Javascript
浅谈vue中.vue文件解析流程
Apr 24 Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
使用JavaScript解析URL的方法示例
Mar 01 Javascript
vue实现表格合并功能
Dec 01 Vue.js
浅谈node.js中间件有哪些类型
Apr 29 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 #Javascript
JQuery读取XML文件数据并显示的实现代码
Dec 16 #Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
Dec 15 #Javascript
jQuery 渐变下拉菜单
Dec 15 #Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
Dec 15 #Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
Dec 15 #Javascript
查询绑定数据岛的表格中的文本并修改显示方式的js代码
Dec 15 #Javascript
You might like
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
PHP基础学习小结
2011/04/17 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
[JS]点出统计器
2020/10/11 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
linux面试题参考答案(9)
2015/01/07 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
大专应届生个人简历的自我评价
2013/10/15 职场文书
高中毕业自我鉴定
2013/12/16 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
2013年军训通讯稿
2014/02/05 职场文书
《钱学森》听课反思
2014/03/01 职场文书
会计员岗位职责
2014/03/15 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
教师岗位职责
2015/02/03 职场文书
严以律己学习心得体会
2016/01/13 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书