Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 字符计数器本应切断文本,但在复制时不切断_Javascript - Fatal编程技术网

Javascript 字符计数器本应切断文本,但在复制时不切断

Javascript 字符计数器本应切断文本,但在复制时不切断,javascript,Javascript,我有一个字符计数器,它会切断文本,一旦达到最大限制,就不允许用户继续键入。这在输入文本时有效,但由于某些原因,当复制大于最大值的文本时,它只会切断部分文本,这意味着计数仍然大于最大值。在复制文本时,它还会显示剩余的0个字符,但当我计数字符时,它仍然大于最大值 function textCounter(field,field2,maxlimit) { var countfield = document.getElementById(field2); if ( field.value.repl

我有一个字符计数器,它会切断文本,一旦达到最大限制,就不允许用户继续键入。这在输入文本时有效,但由于某些原因,当复制大于最大值的文本时,它只会切断部分文本,这意味着计数仍然大于最大值。在复制文本时,它还会显示剩余的0个字符,但当我计数字符时,它仍然大于最大值

function textCounter(field,field2,maxlimit)
{
  var countfield = document.getElementById(field2);
 if ( field.value.replace(/\n/g, "\n\r").length > maxlimit ) {
   field.value = field.value.replace(/\n/g, "\n\r").substring( 0,maxlimit).replace(/\n\r/g, "\n");
 } else {
  countfield.value = maxlimit - field.value.replace(/\n/g, "\n\r").length;
 }
 }

上面是javascript函数。任何帮助,以便在复制大于最大值的文本时,在正确的部分截断文本,以便提交表单。

一般来说,我会查看maxlength属性


具体来说,我猜您的代码不是“粘贴时”执行的,而是在按键时执行的。您在哪种情况下启动textCounter?你能提供文本区域的代码吗?

maxlength属性有什么问题吗?我设置了最大长度,但当它被复制到其中时,允许的字符数超过最大长度状态。${status.value}可以。我的解决方案是在textarea下面添加一个计时器,在您的例子中,它将读取setInterval(function(){textCounter(这个,${status.expression}',50);},${TEXT_AREA_LENGTH});就我所见,您遇到的问题是浏览器忽略了maxlength(可能是IE),粘贴(单击)不会触发onkeyup事件。一种可能是监听所有可能的事件(包括onchange),我认为定时器是最简单的解决方案。