2012-07-30 51 views
0

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

但是当我复制粘贴内容超过40个,而不是gettinng弹出(警报),直到我做了一个键入/关闭文本区域。

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

有没有办法粘贴到textarea后没有keyup/down得到警报?

+0

如果粘贴的文本长度超过40个字符,会发生什么情况? – 2012-07-30 13:42:05

+0

您是否使用JavaScript库来绑定事件处理程序? – 2012-07-30 13:45:30

+0

@sime它应该提醒(“超过40个字符输入修改”); – saTech 2012-07-30 14:05:37

回答

-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> 
1

如果要修剪的飞行多余的字符,您应该使用的onChange事件为

+0

关于CHange不能正常工作:( – saTech 2012-07-30 13:40:19

+1

为什么不?)它会给你一个错误吗? – 2012-07-30 13:40:51

1

,另一种可能的方式将是如下。

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

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

样品:http://jsfiddle.net/codebombs/AyLdW/

如果你想只显示一个警告信息,然后使用onchange

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

+0

我想在用户粘贴超过40个字符时得到警报..但是用我的代码,当用户粘贴40个字符时,我不会收到警告。用户点击textarea即时通讯获取警报.. – saTech 2012-07-30 13:41:28

+0

试试这个:'http:// jsfiddle.net/codebombs/3Jdvg/1 /' – 2012-07-30 13:47:36

0

喜欢的东西:

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

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

0

假设我们有一个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; 
     } 

    }