有一个文本框, <textarea>, 其中输入的字符不能超过100个字符:1个汉字算2个字符,半角的英文字母、数字、标点符号算1个字符,全角的算2个字符。在输入的时候,在输入框的右侧提示一共还可以输入多少字符,随着输入,这个数字应该是变化的,当输入的字符超出100个字符的时候,这个地方的提示变成红色的字体提示,提示还可以输入负的XX个字符,说明已经超XX个了字符了。 注意输入半角的"{" 或"}" 不计算,比如还可以输入3个字符,输入一个"{"或"}"时,依然还可以输入3个其他字符. 
这个功能是在提交前的判断,也是帮助客户在输入的时候,对输入的内容长度有个明白的了解。请高手指教个代码,谢谢! 

解决方案 »

  1.   


    <script LANGUAGE=JavaScript>
      function textLimitCheck(thisArea, maxLength){
        if (thisArea.value.length > maxLength){
          alert(maxLength + ' 个字限制. \r超出的将自动去除.');
          thisArea.value = thisArea.value.substring(0, maxLength);
          thisArea.focus();
        }
        /*回写span的值,当前填写文字的数量*/
        messageCount.innerText =maxLength -  thisArea.value.length;
      }
    </script>
    <body>
    <textarea name="coms" cols="40" rows="7" onkeyUp="textLimitCheck(this,1000);"></textarea>(限 20-1000 个字符) 还可输入 <font id="messageCount" class="red">1000</font> 个字</span>
    </body>
      

  2.   


      <textarea id="area"></textarea>
      <div id="tip"></div>    String.prototype.getLength = function() {
            var length = 0, value = this.split('');
            for (var i = 0, count = value.length; i < count; i++) {
                length += value[i].charCodeAt(0) > 128 ? 2 : 1;
            }
            return length;
        }
        window.onload = function() {
            var area = document.getElementById('area'), tip = document.getElementById('tip');
            area.onkeyup = function() {
                var text = area.value.replace(/{|}*/g, ''), total = 100 - text.getLength();
                tip.innerHTML = total;
                if (total < 0) tip.style.color = "Red";
            }
        }