限制用户在textarea中粘贴max(40)个字符

时间:2012-07-30 13:28:10

标签: javascript asp.net html asp.net-mvc

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

但是当我复制粘贴超过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的情况下获得提醒?

5 个答案:

答案 0 :(得分:1)

您可能应该使用onChange事件

答案 1 :(得分:1)

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

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

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

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

如果您只想显示一条提醒信息,请使用onchange

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

答案 2 :(得分: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;
        }

    }

答案 3 :(得分:0)

类似的东西:

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

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

答案 4 :(得分:-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>