是否可以检测到粘贴到HTML文本区域中的字符数,如果超出限制则取消粘贴?
编辑:我要做的是阻止用户粘贴大量字符(约300万),因为它会使某些浏览器崩溃。所以我想在浏览器锁定之前取消粘贴。我正在制作一个文档编辑器,用户可能会尝试这样做。但他们可以根据自己的意愿打字。
答案 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访问剪贴板内容,因此无法阻止它。但是,您有三种选择:
这些只是一些建议,如果你找到另一种方法,请告诉我。
答案 4 :(得分:0)
我将使用jQuery并为textarea添加事件处理程序。当处理程序触发时,进行计数并根据需要做出响应。