限制textarea中可以粘贴的字符数

时间:2010-02-03 07:52:20

标签: jquery html textarea copy-paste

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

编辑:我要做的是阻止用户粘贴大量字符(约300万),因为它会使某些浏览器崩溃。所以我想在浏览器锁定之前取消粘贴。我正在制作一个文档编辑器,用户可能会尝试这样做。但他们可以根据自己的意愿打字。

5 个答案:

答案 0 :(得分:11)

你可以在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

答案 1 :(得分:6)

$("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,这将修剪文本并提醒用户,您还可以将其附加到按键事件。

有关详细信息,请参阅:http://viralpatel.net/blogs/2008/12/set-maxlength-of-textarea-input-using-jquery-javascript.html

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

您无法通过JS访问剪贴板内容,因此无法阻止它。但是,您有三种选择:

  1. 不允许用户粘贴内容(这对用户体验非常不利)。
  2. 使用onPaste事件,以便在粘贴后将粘贴的内容从0转换为字符数限制。
  3. 使用javascript / flash插件(这不适用于移动设备)。
  4. 使用applet或SilverLight(我不喜欢这个)
  5. 这些只是一些建议,如果你找到另一种方法,请告诉我。

答案 4 :(得分:0)

我将使用jQuery并为textarea添加事件处理程序。当处理程序触发时,进行计数并根据需要做出响应。