jquery – 如何阻止用户在达到最大字符数限制后在textarea中输入文本

我想阻止用户在达到最大字符数限制后在textarea中输入文本。发生了什么,当我达到最大限制,然后我的文本区域滚动条移动到顶部我以某种方式阻止这个代码。

jQuery(document).ready(function($) {
    $('textarea.max').keyup(function() {
        var $textarea = $(this);
        var max = 400;
        if ($textarea.val().length > max) {
            var top = $textarea.scrollTop();
            $textarea.val($textarea.val().substr(0, max));
            $textarea.scrollTop(top);

        }
    });
}); //end if ready(fn)

但我也希望达到最大限制用户无法在textarea中输入任何内容。目前,如果用户按住键达到最大限制,则会在文本区域中键入字符,但是在释放按钮之后,它将返回到原始文本(即$ textarea.val($ textarea.val())。 substr(0,max));)。但是,一旦这个条件成真,我想要

if ($textarea.val().length > max) {

用户无法输入任何内容。我想要该光标从文本区域消失。但是如果用户删除一些文本,则光标也可供用户重新输入。我该怎么做?

最佳答案
在发生默认行为(填充文本区域)之后,keyup事件触发。

最好使用按键事件,并过滤不可打印的字符。

演示:http://jsfiddle.net/3uhNP/1/(最大长度4)

jQuery(document).ready(function($) {
    var max = 400;
    $('textarea.max').keypress(function(e) {
        if (e.which < 0x20) {
            // e.which < 0x20, then it's not a printable character
            // e.which === 0 - Not a character
            return;     // Do nothing
        }
        if (this.value.length == max) {
            e.preventDefault();
        } else if (this.value.length > max) {
            // Maximum exceeded
            this.value = this.value.substring(0, max);
        }
    });
}); //end if ready(fn)

转载注明原文:jquery – 如何阻止用户在达到最大字符数限制后在textarea中输入文本 - 代码日志