0

我们有一个文本区域,它应该只允许 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);
    }
},

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

4

2 回答 2

5

处理所有输入现代浏览器有oninput事件

这是使用此事件执行您要求的示例:

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

演示

对于旧浏览器,您应该使用 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);
});​

老浏览器演示

于 2012-12-10T06:44:27.220 回答
2

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

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

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

我不是 100% 确定这是一个旧功能还是由 HTML5 发明的。恕我直言,自从进行了一些修订后,它就已经可用了。但是 w3schools 说它是 textareas 的新功能。

PS:这是我一个月前写的:https ://github.com/sdepold/jquery.char-counter 。它基本上是观察插入到 textarea 中的字符数并切断所有过多的字符。你也得到一个字符计数器。

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

于 2012-12-10T06:36:26.740 回答