往textarea中输入时,用onkeyup可以控制键盘输入字数,可onkeyup对粘贴不管用,粘贴的数字应该怎样控制?谢谢!

解决方案 »

  1.   

    看看这个http://topic.csdn.net/u/20100107/10/2d019f0b-bd6a-4c83-aab0-6ed9856f3777.html
      

  2.   

    window.onload = function() {
    document.getElementById("tField").onpaste = function(){
    if(this.value.length>10)this.value="...";
    }
      

  3.   

    function LessThan(oTextArea){
    //返回文本框字符个数是否符号要求的boolean值
    return oTextArea.value.length < oTextArea.getAttribute("maxlength");
    }
    </script>
    <textarea name="comments" id="comments" cols="40" rows="4" maxlength="50" onkeypress="return LessThan(this);"></textarea>
      

  4.   

    have a try<script type="text/javascript">
    window.onload = function() { 
        document.getElementById("tField").onbeforepaste  = function(){
            var obj=clipboardData.getData("Text");
            if(this.value.length+obj.length>10)this.value="..."; 
        }
    }
    </script>
    <input type="text" value="show"id="tField">
      

  5.   

    谢谢8楼,
    只是它要叫两次,为什么?怎样让它只叫一次?
    if(this.value.length+obj.length>10){
    alert('it is too long');
    }
      

  6.   

    <script type="text/javascript"> 
    window.onload = function() { 
    document.getElementById("txt").onbeforepaste = function(){ 
    var obj=clipboardData.getData("Text"); 
    if(this.value.length+obj.length>10){
    alert(this.value.length);
    alert(obj.length);
    alert('it is too long');
    }}} 
    </script>
    <textarea id=txt name=txt rows='5' cols='60' >txt</textarea>
      

  7.   

    <script type="text/javascript">
    window.onload = function() {
      document.getElementById("txt").onbeforepaste = function(){
      var obj=clipboardData.getData("Text");
         if(this.value.length+obj.length>10){
            this.value=(this.value+obj).substring(0,10);
            clipboardData.setData("Text","");//clear clipboarddata
         }
      }
    }
    </script>
    <textarea id=txt name=txt rows='5' cols='60' >txt</textarea>
      

  8.   

    <textarea id=txt name=txt rows='5' cols='60' >txt</textarea>
    document.getElementById("txt").onkeyup=document.getElementById("txt").onchange=function(){
    //== 函数
    }
      

  9.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title><script language="javascript">
    function inputNumberSet(oIpt, nMin, nMax)
    {
      oIpt.oldNum = Number(oIpt.value);
      if(typeof(nMin)=="number")oIpt.nMin = nMin;
      if(typeof(nMax)=="number")oIpt.nMax = nMax;
      
      oIpt.onkeydown = inputNumKeyDown;
      oIpt.onmousewheel = inputNumWheel;
      oIpt.onkeyup = inputNumKeyUp;
      oIpt.numLimit = inputNumLimit;
    }  function inputNumKeyDown(evt)
      {
        var nKeyCode;
        if(typeof(event)=="undefined")
          nKeyCode = evt.keyCode
        else
          nKeyCode = event.keyCode;
        if(nKeyCode==38)
        {
          this.oldNum ++;
          this.value = this.oldNum;
        }
        if(nKeyCode==40)
        {
          this.oldNum --;
          this.value = this.oldNum;
        }
        this.numLimit();
        if((nKeyCode==13)&&typeof(this.fFun)=="function")this.fFun(this);
      }  function inputNumWheel(evt)
      {
        if(typeof(event)=="object")
        {
          if(event.wheelDelta > 0)
          {
            this.oldNum ++;
            this.value = this.oldNum;
          }
          if(event.wheelDelta < 0)
          {
            this.oldNum --;
            this.value = this.oldNum;
          }
          this.numLimit()
        }
      }  function inputNumLimit()
      {
        if((typeof(this.nMin)=="number")&&(this.oldNum<this.nMin))
        {
          this.oldNum    = this.nMin;
          this.value    = this.nMin;
        }
        else
        {
          if((typeof(this.nMax)=="number")&&(this.oldNum>this.nMax))
          {
            this.oldNum = this.nMax;
            this.value  = this.nMax;
          }
        }
        if(typeof(this.onchange)=="function")this.onchange();
      }  function inputNumKeyUp(evt)
      {
        if(this.value.length == 0)
        {
          if((typeof(this.nMin)=="number")&&(this.nMin>0))
          {
            this.value    = this.nMin;
            this.oldNum   = this.nMin;
          }
          else
          {
            this.value    = 0;
            this.oldNum    = 0;
          }
        }
        else
        {
          var nNewNum = Number(this.value);
          if(String(nNewNum) != "NaN")
          {
            this.oldNum    = nNewNum;
          }
          else
          {
            this.value    = this.oldNum;
          }
        }
        this.numLimit();
      }
      
      function myLoad()
      {
        inputNumberSet(document.getElementById("myInput"), -5, 500)
      }
    </script>
    </head><body onload="myLoad()">
    <p>
      <input type="text" name="myInput" id="myInput"/>
    最小-5,最大500。键盘上下可设置。滚轮IE、Chrome等支持</p>
    <p>&nbsp;</p>
    <p>inputNumberSet(oIpt, nMin, nMax)<br />
    oIpt:输入框<br />
      nMin:最小值<br /> 
        nMax:最大值</p>
    </body>
    </html>
    保存为HTML看看
      

  10.   

    谢谢上面各位,特别要谢谢shan1119,
    可能是我没表达清楚,我要的效果是当字符超过一定数量时,让按钮变灰,使得表单无法提交,
    下面是按照13楼的代码写的,这个在ie上好使,可在ff上不行,请大家想想办法,怎样才能在ff上也好使,谢谢!
    <script type="text/javascript"> 
    window.onload = function() {
        document.getElementById("txt").onpaste = function(){
            var obj=clipboardData.getData("Text"); 
            if(this.value.length+obj.length>10){ 
                alert("Your question is too long!");
                form1.submit.disabled=true
    } } }
    </script> 
    <form id=form1>
    <textarea id=txt name=txt rows='5' cols='60' >txt</textarea>
    <input type=submit name=submit value=submit>
    </form>
      

  11.   

    http://topic.csdn.net/u/20070129/11/E3A25262-FF8D-447C-AC97-117E481D17CE.html
    参考一下吧,ff我还没用过
      

  12.   

    你早说就更简单了 onchange事件中判断下 长度就可以了
      

  13.   


    LZ,你可以试试我这个啊。我在IE,FireFox, Chrome, Opera, Safari上都有测试过啊
      

  14.   

    谢谢上面各位,这几天有事,没及时结帖,15楼的代码以后有时间一定好好钻研一下,最后我采用的方案是:
    <script>
    function len_over(){
        txt=document.getElementById("txt")       
        if(txt.value.length>10){            
            alert("it is too long!");
            form1.submit.disabled=true;
    }}
    </script> 
    <form id=form1>
    <textarea id=txt name=txt rows=5 cols=60 onfocus={form1.submit.disabled=false;}>
    <input type=submit name=submit value=submit onclick=len_over()>
    </form>这个在ie上很好用,给了提示,按钮灰了,也不离开原页面,txt中的东西还在,
    在ff上,转到了action指定的页面,尽管数据没被处理,也可以再转回来,但毕竟要多几行代码,给人感觉不好,
    再次谢谢大家,有好的办法请告诉我,谢谢!