【问题标题】:Textarea input length check in JavaScriptJavaScript中的Textarea输入长度检查
【发布时间】:2015-04-29 20:21:33
【问题描述】:

我想创建一个 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 后要对它做什么。您要连同 textarea 的内容一起提交吗?
  • 好吧,看起来它实际上是一个可行的解决方案,我之前可能忽略了一些东西。

标签: javascript forms validation textarea


【解决方案1】:

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

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

您当前的示例不允许用户在输入/粘贴文本后删除文本。更好的示例是无状态的,即不要将 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2011-11-19
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多