控制textarea长度  textarea的maxlength属性一样有效果

给textarea增加maxlength属性
<textarea cols="30" maxlength="10"></textarea>
<script language="javascript">
var x = document.getElementsByTagName('textarea');
for (var i=0;i<x.length;i++)
{
 if (x[i].getAttribute('maxlength')){
  x[i].onkeypress = doKeyPress;
  x[i].onkeydown = doKeyDown;
  x[i].onbeforepaste = doBeforePaste;
  x[i].onpaste = doPaste;
  x[i].ondrop = doDrop;
 }
}
function doKeyPress()
{
 var obj = event.srcElement;
 if(obj.maxlength != null){
  var len = obj.maxlength;
  }
 var oTR = obj.document.selection.createRange();
 if(oTR.text.length >= 1)
  event.returnValue = true;
 else if(obj.value.length > len - 1)
  event.returnValue = false;
}
function doKeyDown()
{
  var obj = event.srcElement;
  if(obj.maxlength != null){
   var len = obj.maxlength;
   }
    setTimeout(function()
    {
      if(obj.value.length > len)
      {
          var oTR = window.document.selection.createRange();
          oTR.moveStart("character", -1*(obj.value.length - len));
          oTR.text = "";
      }
    },1)
}
function doBeforePaste()
{
 event.returnValue = false;
}
function doPaste()
{
  event.returnValue = false;
 var obj = event.srcElement;
 if(obj.maxlength != null){
  var len = obj.maxlength;
  }
 var oTR = obj.document.selection.createRange();
 var iInsertLength = len - obj.value.length + oTR.text.length;
 oTR.text = window.clipboardData.getData("Text").substring(0,iInsertLength);
}
function doDrop()
{
 event.returnValue = false;
}
</script>
效果:
    类似 input type="text" 中maxlength的效果。最多接受maxlenght个字符(不区分字母还是中文),包括输入和粘贴。
    有一点不同就是不接受drop事件。在同一个窗口中拖拉本来是能够控制的,但是从其它窗口拖入该textarea的话,我还没找到办法来控制,所以只好做成现在这样,不提供drop的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值