如何使用jQuery限制在textarea中通过鼠标单击粘贴的文本?

时间:2012-12-10 06:23:31

标签: javascript jquery web char textarea

我们有 textarea ,它应该只允许300个字符。我们可以通过任何键盘按下事件使用

来控制它
onkeydown="limitText(this,300);" 
onkeyup="limitText(this,300);

其中limitText如下

limitText = function (limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }
},

但我们无法通过此控制 mouseClick 粘贴....请分享任何想法。 请注意:我在互联网上检查了几个解决方案,但无法解决。我知道这是一个小问题,但作为 jQuery 的新手(实际上是整个网络世界),我无法在正确的位置ping ...

2 个答案:

答案 0 :(得分:5)

要处理所有输入现代浏览器oninput event

以下是使用此事件执行操作的示例:

$('.limited').bind('input',function() {
    var $t=$(this);
    var max=$t.data('maxchars');
if ($t.val().length>max) {
    $t.val($t.val().substr(0,max));
}
});​

DEMO

对于旧浏览器,您应该使用keyup,keydown + onpaste:

$('.limited').bind('keyup keydown paste',function(e) {
    var $t=$(this);
    setTimeout(function(){ 
    var max=$t.data('maxchars');
if ($t.val().length>max) {
    $t.val($t.val().substr(0,max));
}
    },0);
});​

OLD BROWSERS DEMO

答案 1 :(得分:2)

通过javascript控制textarea的长度并不是一个真正的智能解决方案,因为HTML已经支持开箱即用:)

http://www.w3schools.com/tags/att_textarea_maxlength.asp

<textarea maxlength="50">
  Enter text here...
</textarea>

我不是100%确定这是一个旧功能还是由HTML5发明的。 Imho它已经可用,因为一些修订。但w3schools说它是textareas的新品。

PS:这是我一个月前写的:https://github.com/sdepold/jquery.char-counter。它基本上是观察插入文本区域的字符数量,并切断过多的一切。你也得到一个炭柜台。

PPS:jquery.char-counter的演示:http://jsfiddle.net/TBDue/