Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 粘贴超过maxlength的字符后,jQuery更新字符计数器_Javascript_Jquery - Fatal编程技术网

Javascript 粘贴超过maxlength的字符后,jQuery更新字符计数器

Javascript 粘贴超过maxlength的字符后,jQuery更新字符计数器,javascript,jquery,Javascript,Jquery,我有一个带有文本区域的表单,我试图阻止用户向其中粘贴超过1000个字符。我有一个div,它显示用户键入时剩下的字符数,这就是问题所在。我有粘贴部分工作,但我也试图设置字符计数器在同一时间 代码如下: <textarea name="Note" id="Note" cols="80" rows="5" class="text-input shadow form-control" maxlength="1000"></textarea> <div id="NoteLe

我有一个带有文本区域的表单,我试图阻止用户向其中粘贴超过1000个字符。我有一个div,它显示用户键入时剩下的字符数,这就是问题所在。我有粘贴部分工作,但我也试图设置字符计数器在同一时间

代码如下:

<textarea name="Note" id="Note" cols="80" rows="5" class="text-input shadow form-control" maxlength="1000"></textarea>

<div id="NoteLength"></div>
<div>characters remaining.</div>

它会按预期截断文本,但不会将NoteLength div重置为如果我粘贴一大块文本,比如1500个字符。如果我粘贴200个字符的块,计数器工作正常。如果我在粘贴的最后一个字符上也使用了退格,那么它就可以工作,只是当我在一次粘贴中使用了退格,不幸的是,这是最有可能的用户场景

您可以使用输入事件捕获用户对输入值的任何更改

$("#NoteLength").text("1000");

//user is changing the input value, typing or pasting, all of it
$("#Note").on('input', function () {
  if (this.value.length > 1000) {
    this.value = this.value.substr(0, 1000);
  }

  $("#NoteLength").text(1000 - this.value.length);
});

可能的重复已经被讨论过了…当然,它并没有更新音符的长度。这在keyup事件处理程序的else子句中……是的,几乎所有内容都已经讨论过了。您发布的示例是弹出警报,而不是显示计数器,而这正是我一直坚持的部分,也许我们可以撤销当前流行的“重复”收费。如果你没有关于计数器的任何信息,请继续。Taplar,这部分实际上是工作的,这是用户打字时使用的。是的,这很好。谢谢塔普拉@不过我很好奇。我在标记中看到在输入元素上设置了maxlength。用户如何能够超越这一点?浏览器应该停止它们。浏览器正在停止它们,但我直到稍后才发现。我正在削减代码,以便处理计数器。
$("#NoteLength").text("1000");

//user is changing the input value, typing or pasting, all of it
$("#Note").on('input', function () {
  if (this.value.length > 1000) {
    this.value = this.value.substr(0, 1000);
  }

  $("#NoteLength").text(1000 - this.value.length);
});