六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 31|回复: 0

控制textarea的maxLength

[复制链接]

升级  26.67%

26

主题

26

主题

26

主题

秀才

Rank: 2

积分
90
 楼主| 发表于 2013-2-7 14:32:43 | 显示全部楼层 |阅读模式
http://www.zhuoda.org/irini/84659.html
textarea标签虽然有maxLength属性,但是它并不管用,所以只能自己控制,
下面的例子中我的思路是:
在 textarea中输入内容后就判断是否超出了maxLength,如果超出就按照maxLength截取textare的值,有个问题,如果用鼠标来拷贝粘贴就没法调用判断maxLength的方法,解决办法就是当textarea获取焦点时把鼠标右键失效,失去焦点时再恢复鼠标右键

这个方法从功能上解决了textarea的maxLength问题,但还不是很完美,在输入超过maxLength的字符后光标会有闪烁,因为是截取回填,没有像input的maxLength那样真正不让输入,今天一时也想不到好办法,以后找到再补充进来。


<html>

<head>

<title></title>
<script type="text/javascript">

var textarea_maxlen = {
  isMax : function (){
var textarea =
document.getElementById("area");
var max_length = textarea.maxLength;
if(textarea.value.length > max_length){
  textarea.value =
textarea.value.substring(0, max_length);
}
  },
  disabledRightMouse : function (){
document.oncontextmenu =
  function (){ return false; }
  },
  enabledRightMouse : function (){
document.oncontextmenu = null;
  }
};
</script>
</head>

<body>
<textarea id="area" maxLength="10"
  onkeyup="textarea_maxlen.isMax()"
   
  
  rows="20" cols="100">
</textarea>
</body>

</html>

因为maxLength在火狐里取不到值,所以用取自定义属性的方法取值:
var max_length = textarea.maxLength;
改为
var max_length = textarea.getAttribute("maxLength");
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表