达到某个字符数后,如何防止输入textarea?

时间:2015-05-06 21:40:39

标签: javascript html

使用以下代码,删除超出指定最大值的任何输入。但这会产生一种效果,即键入一个字符然后立即删除。我宁愿简单地阻止输入字符。

<textarea  id="textarea" onKeyDown="limitText()" onKeyUp="limitText()">
</textarea> 
<span name="charcount_text" id="charcount_text"></span>

  <script type="text/javascript">
    function limitText() {
      var count = document.getElementById('textarea').value.length;
      var remaining = 4000 - count;
      if(remaining <= 0) {
        document.getElementById('charcount_text').innerHTML = '4000 character limit reached.' ;
        document.getElementById('textarea').value = document.getElementById('textarea').value.substring(0, 4000);
      } else if(remaining <= 50) {
        document.getElementById('charcount_text').innerHTML = '4000 character limit, ' + remaining  + ' remaining.';
      } else {
        document.getElementById('charcount_text').innerHTML = '';
      }
    }
  </script>

2 个答案:

答案 0 :(得分:8)

使用maxlength属性:

<textarea  id="textarea" maxlength="4000" onkeyup="limitText()"></textarea>

function limitText() {
  var ta= document.getElementById('textarea'),
      count= ta.value.length,
      ml= ta.maxLength,
      remaining= ml - count,
      cc= document.getElementById('charcount_text');

  if(remaining <= 0) {
    cc.innerHTML = ml+' character limit reached.' ;
  } else if(remaining <= 50) {
    cc.innerHTML = ml+' character limit, ' + remaining  + ' remaining.';
  } else {
    cc.innerHTML = '';
  }
}

Fiddle

答案 1 :(得分:1)

试试这个

$.fn.lenghtLimit = function(numLimit) {
  var currentEle = $(this);

  function main() {
    var getCurrentVal = currentEle.val();
    if (getCurrentVal.length > numLimit) {
        currentEle.val(getCurrentVal.substring(0, numLimit));
    }
  }
  $(document).on("keyup", currentEle, main);
}

// call method here with number limit
$("#numberInput").lenghtLimit(10);

您可以使用此限制任何输入或textarea值长度    https://jsfiddle.net/akalankaimesh/7hkagewh/