【问题标题】:How to prevent input to a textarea after a certain character count is reached?达到一定字符数后如何防止输入到文本区域?
【发布时间】:2015-05-06 21:40:38
【问题描述】:

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

<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>

【问题讨论】:

标签: javascript html


【解决方案1】:

使用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

【讨论】:

  • 在 Chrome 中运行 fiddle 时,输入一些空格(按回车键)计数显示剩余 8 个但您不能再输入任何字母。
  • @ParikTiwari:有趣! Chrome 在maxlength 逻辑中将新行视为两个字符,但在value.length 中仅视为一个字符。 IE 和 Firefox 没有这个问题。似乎是 Chrome 特有的错误。
【解决方案2】:

试试这个

$.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);

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

【讨论】:

  • 请考虑编辑文本格式。文本!= 代码。另外:哪个jQuery插件? => 添加一个链接。
  • @fuma 谢谢你的建议。我只是编辑代码。我的意思是我的简单功能用作插件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多