Ограничить количество символов в поле ввода - PullRequest
19 голосов
/ 29 декабря 2011

Я хочу использовать jquery для ограничения количества символов в редактируемом div (или вводе формы).

Ответы [ 8 ]

47 голосов
/ 29 декабря 2011

использовать maxlength в input тег

<input type="text" maxlength="20" /> 
19 голосов
/ 29 декабря 2011

Атрибут Maxlength - для браузера, поддерживающего эту функцию.
Javascript - для других.

<input class="test-input" type="text" maxlength="12" />
<script>
$('.test-input').unbind('keyup change input paste').bind('keyup change input paste',function(e){
    var $this = $(this);
    var val = $this.val();
    var valLength = val.length;
    var maxCount = $this.attr('maxlength');
    if(valLength>maxCount){
        $this.val($this.val().substring(0,maxCount));
    }
}); 
</script>

http://jsfiddle.net/tvpRT/

9 голосов
/ 29 декабря 2011

Думаю, это должно сработать.

HTML

<input type="text" name="myText" id="myText" data-maxlength="10" />

JQuery

$('#myText').keyup(validateMaxLength);

function validateMaxLength()
{
        var text = $(this).val();
        var maxlength = $(this).data('maxlength');

        if(maxlength > 0)  
        {
                $(this).val(text.substr(0, maxlength)); 
        }
}
6 голосов
/ 29 декабря 2011

Если вы хотите использовать JQuery, вы можете написать что-нибудь самостоятельно или просто использовать существующий плагин, такой как этот .

Но я согласен с dku.rajkumar ... Чтонеправильно использовать атрибут maxlength?

<input type="text" maxlength="15" />

Если вы самый большой поклонник JQuery когда-либо , хотя и отчаянно хотите установить maxlength для всех полей вводасразу сделайте что-то вроде:

$(document).ready(function() {
   $('input[type="text"]').attr({ maxLength : 15 });
});

Просто имейте в виду, что этот метод (JQuery) не будет работать для людей, у которых (по любой причине) отключен JavaScript.В то время как атрибут maxlength тега input работает для всех во всех браузерах.

5 голосов
/ 29 декабря 2011

Что касается поля ввода, вы можете использовать атрибут maxlength. Если вы ищете div, проверьте следующее,

        $(function() {

            $ ('#editable_div').keydown ( function (e) {
                //list of functional/control keys that you want to allow always
                var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];

                if( $.inArray(e.keyCode, keys) == -1) {
                    if (checkMaxLength (this.innerHTML, 15)) {
                        e.preventDefault();
                        e.stopPropagation();
                    }
                }
            });

            function checkMaxLength (text, max) {
                return (text.length >= max);
            }
        });

        <div id="editable_div" contentEditable="true" onclick="this.contentEditable='true';" >TEXT BEGIN:</div>

Редактировать: вам следует переписать функцию checkMaxLength, чтобы игнорировать вкладки и символ новой строки

4 голосов
/ 29 декабря 2011

Скажем, это форма ввода.Вы можете сделать это с атрибутом 'maxlength', но если вы скажете 'используя jQuery',вот решение.

$('input#limited').attr('maxlength', '3'); 

или вы можете проверить каждое нажатие клавиши

$('input#limited').keypress(function() {
     /*
     check for 3 or greater than 3 characters.
     If you check for only greater than 3, then it will let
     you write the fourth character because just before writing,
     it is not greater than three.
     */
     if($(this).val().length >= 3) {
        $(this).val($(this).val().slice(0, 3));
        return false;
    }
});
0 голосов
/ 07 мая 2019
 $('#id').keypress(function(e) {
   var foo = $(this).val()
     if (foo.length >= 14) { //specify text limit
        return false;
        }
    return true;
 });
0 голосов
/ 29 декабря 2011

просто используйте атрибут с именем "maxlength". Вы можете прочитать больше об атрибутах ввода на w3 input

...