4

我想将 textarea 限制为 500 个字符。为此,我使用了 maxlength 属性,但不同浏览器之间存在一些兼容性问题。为了解决这个问题,我使用了一个 javascript 函数

function checkLength(fieldName,limit){

            if(fieldName.value.length >= limit){

                fieldName.value  = fieldName.value.substring(0,limit);
            }
        }

我在onKeyDownonKeyUp两个事件上调用此函数。这在一定程度上解决了我的问题,但是当我复制并粘贴长度超过 500 个字符的字符串时,它会显示所有文本,然后在按键时修剪为 500。有没有办法在复制粘贴时准确显示 500 个字符而不会闪烁。

4

2 回答 2

1

如果您愿意使用 jquery,那么这里的解决方案将解决您的整个问题:

脚本

$('textarea').on('paste keyup keydown', function (event) {
 var element = this;
  setTimeout(function () {
   if($(element).val().length > 500)
    {
     if(event.type=="paste"){
      $(element).val($(element).val().substr(0,500))    
     }else{
      $(element).val($(element).val().slice(0,-1));
     }
      alert("excceded more then 500 characters");
    }else{
     return true;
    }
 }, 100);
});

在这里查看演示:http: //jsfiddle.net/2Qxh9/

于 2013-10-21T07:37:06.520 回答
0

you can try something like this:

            <script language="javascript" type="text/javascript">
            function limitText(limitField, limitCount, limitNum) {
                if (limitField.value.length > limitNum) {
                    limitField.value = limitField.value.substring(0, limitNum);
                    alert("your message exceeds the limit");
                } else {
                    limitCount.value = limitNum - limitField.value.length;
                }
            }
            </script>

            <form name="myform" action="">
                <textarea id="t1" name="description" onpropertychange="limitText(this.form.description,this.form.countdown,500);"  OnInput="limitText(this.form.description,this.form.countdown,500);" onKeyDown="limitText(this.form.description,this.form.countdown,500);" rows="20" cols="40">
                </textarea><br>
               <font size="1">(Maximum characters: 500)<br>
                You have <input readonly type="text" name="countdown" size="3" value="10"> characters left.</font>
            </form>
于 2013-10-21T08:35:05.177 回答