0

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

但是当我复制粘贴超过 40chars 的内容时,直到我在 textarea 上执行 keyup/down 时才会弹出(警报)。

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");
  }
}

有没有办法在不keyup/down粘贴后获得警报textarea

4

5 回答 5

1

您可能应该onChange为此使用该事件

于 2012-07-30T13:29:56.090 回答
1

如果您想即时修剪多余的字符,另一种可能的方法如下。

  • 创建一个修剪功能,它将修剪超过 40 个字符。例如 - trimText()
  • onFocus - 添加一个setInterval函数以trimText()在每 500 毫秒后调用一次。
  • onBlur - 清除setInterval功能并trimText()再次运行。
  • onChange -trimText()再次运行。如果需要,这将是一个额外的检查。

根据您的要求,您可以更新持续时间。

示例:http: //jsfiddle.net/codebombs/AyLdW/

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

演示:http: //jsfiddle.net/codebombs/3Jdvg/1/

于 2012-07-30T13:35:53.113 回答
1

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

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

在粘贴内容之前,首先我们需要检查已经占用了多少长度,然后 window.clipboard.getdata.length 会给我们即将粘贴的数据长度。考虑下面的代码

   function maxLengthPaste(field, maxChars) {

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

    }
于 2014-05-29T11:24:02.400 回答
0

就像是:

$('#textbox1').on('change', function() {
    var currentText = $(this).val();
    if(currentText.length > 40)
        $(this).val(substr(currentText,0,40));
});

甚至还有一个省略号插件可以为您添加省略号 (...)。

于 2012-07-30T13:37:05.580 回答
-1

得到解决方案的家伙:)

onKeyUp = "checkLength(this);">
</form>
<script>
function fncKeyLength(textBox){
if (window.event.ctrlKey){
if (window.event.keyCode == 86)//Paste 
if (textBox.value.length > maxLength - 1)
{            
  alert("* You have reached max limit ");
  textBox.value = textBox.value.substr(0, maxLength); 
}
</script>
于 2012-07-30T13:51:19.920 回答