Javascript 限制用户在textarea中最多粘贴(40)个字符

Javascript 限制用户在textarea中最多粘贴(40)个字符,javascript,asp.net,html,asp.net-mvc,Javascript,Asp.net,Html,Asp.net Mvc,我限制用户在文本区域中输入最大字符数(40Char)。 我在textarea事件的onKeyUp上调用下面的JS函数 但是当我复制粘贴一个超过40个字符的内容时,,直到我在文本区域上做了一个键向上/键向下操作,才获得弹出窗口(警报) function checkLength(textBox, e, maxLength) { if (textBox.value.length > maxLength - 1) { alert("* You have reached

我限制用户在文本区域中输入最大字符数(40Char)。 我在
textarea
事件的
onKeyUp
上调用下面的
JS
函数

但是当我复制粘贴一个超过40个字符的内容时,,直到我在文本区域上做了一个键向上/键向下操作,才获得弹出窗口(警报)

function checkLength(textBox, e, maxLength) {
  if (textBox.value.length > maxLength - 1) {        
     alert("* You have reached max limit ");
     textBox.value = textBox.value.substr(0, maxLength);
  }
  else {
     alert(maxLength - textBox.value.length + " characters remaining");
  }
}

粘贴到
文本区域后,是否有一种方法可以在不使用
键向上/向下
的情况下获得警报?

您可能应该使用
onChange
事件来处理该事件

如果您想动态修剪额外的字符,另一种可能的方法如下所示

  • 创建一个修剪功能,该功能将修剪超过40个字符。例如-
    trimText()
  • onFocus-添加一个
    setInterval
    函数,以在每500毫秒后调用
    trimText()
  • onBlur-清除
    setInterval
    函数并再次运行
    trimText()
  • onChange-再次运行
    trimText()
    。如果需要,这将是一张额外的支票
根据您的要求,您可以更新持续时间

样本:

如果只想显示一条警报消息,请使用
onchange

演示:

类似于:

$('#textbox1').on('change', function() {
    var currentText = $(this).val();
    if(currentText.length > 40)
        $(this).val(substr(currentText,0,40));
});
甚至还有一个插件可以为您添加省略号(…)。

有解决方案吗

onKeyUp=“checkLength(this);”>
函数fncKeyLength(文本框){
if(window.event.ctrlKey){
if(window.event.keyCode==86)//粘贴
如果(textBox.value.length>maxLength-1)
{            
警报(“*您已达到最大限制”);
textBox.value=textBox.value.substr(0,maxLength);
}

假设我们有一个asp文本框,那么我们可以使用“OnPaste”事件,如下所示

   <asp:TextBox TextMode="MultiLine" runat="server" ID="txtComment_c" 
    onpaste="return maxLengthPaste(this, 40)" MaxLength="40"></asp:TextBox>

我想在用户粘贴超过40个字符时得到警报。但是在我的代码中,当用户粘贴40个字符时,我不会得到警报。一旦用户单击textarea,我会得到警报。如果粘贴的文本长度超过40个字符,会发生什么情况?是否使用JavaScript库绑定事件处理程序?@sime it应该发出警报(“输入的字符超过40个,请修改”);我可以编写一个解决方案,但我需要知道如何在JavaScript中绑定事件处理程序。是否使用库?
   <asp:TextBox TextMode="MultiLine" runat="server" ID="txtComment_c" 
    onpaste="return maxLengthPaste(this, 40)" MaxLength="40"></asp:TextBox>
   function maxLengthPaste(field, maxChars) {

        if ((field.value.length + window.clipboardData.getData("Text").length) > maxChars) {
            alert("Cannot have more than " + maxChars + " Characters");
            return false;
        }

    }