Подтвердить что ты не робот

Maxlength для текстовой области не работает в IE

Я пытаюсь ограничить количество символов, введенных в текстовое поле, как показано:

<div>
 @Html.TextAreaFor(x => x.StudentName, new { @maxlength = "1000" })
</div>

Это отлично работает в Firefox и Chrome, но атрибут maxlength не работает в IE. Как это сделать?

4b9b3361

Ответ 1

Атрибут maxlength не является стандартным для <textarea> в HTML 4.01. Это определенный в HTML5, но, я думаю, IE не реализует его. Чтобы он работал во всех браузерах, вы можете использовать javascript. Здесь пример.

Ответ 2

Вот мое решение на основе jQuery. Хорошо работает в IE9, немного неудобно в IE8.

// textarea event handler to add support for maxlength attribute
$(document).on('input keyup', 'textarea[maxlength]', function(e) {
    // maxlength attribute does not in IE prior to IE10
    // http://stackoverflow.com/q/4717168/740639
    var $this = $(this);
    var maxlength = $this.attr('maxlength');
    if (!!maxlength) {
        var text = $this.val();

        if (text.length > maxlength) {
            // truncate excess text (in the case of a paste)
            $this.val(text.substring(0,maxlength));
            e.preventDefault();
        }

    }

});

http://jsfiddle.net/hjPPn/

ссылка для IE8: http://jsfiddle.net/hjPPn/show

Ответ 3

Вы также можете использовать javascript, что намного проще:

<textarea  name="question" cols="100" rows="8" maxlength="500px" onKeyPress="return ( this.value.length < 1000 );"></textarea>

Ответ 4

Используйте следующий JQuery - например, если вы хотите ограничить длину до 48

$("textarea").keypress(function(e){
    var lengthF = $(this).val();

    if (lengthF.length > 48){
        e.preventDefault();
    }
});