Textarea 输入长度检查 JavaScript

Textarea input length check in JavaScript

我想创建一个 SMS 网关,每次写入(或粘贴)160 个字符时都会提醒用户。我需要存储一个变量 n,其中包含 160 个字符的消息部分数。代码将是这样的,只是 n 需要全局存储。有没有比 e. G。将其存储到隐藏的表单字段中? 注意:在此特定情况下,一次粘贴少于 160 个字符的假设是安全的。

window.onload = function() {
  var n=1;   
  var t=document.getElementById('msg');
  t.addEventListener('input', function() {
    var l=t.value.length;
    if(l>n*160){
      n++;
      alert('Message will be split into '+n+' parts');   
    }
  }, false);
}

正如我评论中提到的,这取决于你最终想用 n 做什么。

如果您只是想让它向用户显示一条消息,您可以在计算出该值后更新 DOM。

您当前的示例不允许用户在输入 typed/pasted 文本后删除文本。更好的示例是无状态的,即不要将 n 与其自身进行比较,因为在我下面的例子中:

var t = document.getElementById('msg');
var splitSize = 10;
var n = 1;
t.addEventListener('input', function() {
  var nextN = 1;
  
  if (t.value.length > 0) {
    nextN = Math.ceil(t.value.length / splitSize);
  }
  
  if (n !== nextN) {
    n = nextN;
    var label = document.getElementById('label');

    if (n === 1) {
      label.innerHTML = '';
    } else {
      label.innerHTML = 'The message will be split into ' + n + ' parts';
    }
  }
});
<p id="label"></p>
<textarea id="msg"></textarea>