代码之家  ›  专栏  ›  技术社区  ›  hoju

限制文本区域中可以粘贴的字符数

  •  11
  • hoju  · 技术社区  · 15 年前

    是否可以检测粘贴到HTML文本区域中的字符数,如果超出限制,是否可以取消粘贴?

    编辑:我要做的是防止用户粘贴大量字符(约300万个),因为它会破坏一些浏览器。所以我想在浏览器锁定之前取消粘贴。我正在制作一个文档编辑器,用户可能会在其中尝试此操作。但他们可以随心所欲地打字。

    5 回复  |  直到 15 年前
        1
  •  11
  •   Reigel Gallarde    15 年前

    您可以在jquery上这样做:

    $(document).ready(function(){
    function limits(obj, limit){
    
        var text = $(obj).val(); 
        var length = text.length;
        if(length > limit){
           $(obj).val(text.substr(0,limit));
         } else { // alert the user of the remaining char. I do alert here, but you can do any other thing you like
          alert(limit -length+ " characters remaining!");
         }
     }
    
    
    $('textarea').keyup(function(){
    
        limits($(this), 20);
    })
    
      })
    

    查看演示 here .

        2
  •  6
  •   StuperUser    15 年前
    $("textarea").blur(function(event) {
        var maxLength = 3000000;
        var length = this.value.length;
        if (length > maxLength) {
            //reassign substring of max length to text area value
            this.value = this.value.substring(0, maxLength);
            alert(maxLength + ' characters allowed, excess characters trimmed');
        }
    });
    

    此jquery将匿名函数附加到textAreas,这将修剪文本并警告用户,您也可以将其附加到keypress事件。

    见: http://viralpatel.net/blogs/2008/12/set-maxlength-of-textarea-input-using-jquery-javascript.html 更多细节。

        3
  •  2
  •   Daniel Vassallo    15 年前

    在IE中,您可以使用 onPaste 事件。( MSDN documentation )

    在Firefox、Safari、Opera和Chrome中,您可以使用 onInput 事件( Dottoro.com reference )此事件在通过用户界面(包括粘贴)更改元素的文本内容时激发。

        4
  •  2
  •   Andres Rojas    12 年前

    你不能通过JS访问剪贴板内容,所以你不能阻止它。但是,您有三种选择:

    1. 不允许用户粘贴内容(这对UX来说是一个非常糟糕的主意)。
    2. 粘贴后,使用OnPaste事件将粘贴的内容从0替换为字符限制。
    3. 使用javascript/flash插件(这在移动设备上不起作用)。
    4. 使用小程序或Silverlight(我不喜欢这个)

    这些只是一些建议,如果你找到另一种方法,请告诉我。

        5
  •  0
  •   Art    15 年前

    我将使用jquery并为文本区域添加一个事件处理程序。当处理程序触发时,进行计数并根据需要响应。