Ответ 1
Атрибут maxlength
не является стандартным для <textarea>
в HTML 4.01. Это определенный в HTML5, но, я думаю, IE не реализует его. Чтобы он работал во всех браузерах, вы можете использовать javascript. Здесь пример.
Я пытаюсь ограничить количество символов, введенных в текстовое поле, как показано:
<div>
@Html.TextAreaFor(x => x.StudentName, new { @maxlength = "1000" })
</div>
Это отлично работает в Firefox и Chrome, но атрибут maxlength не работает в IE. Как это сделать?
Атрибут maxlength
не является стандартным для <textarea>
в HTML 4.01. Это определенный в HTML5, но, я думаю, IE не реализует его. Чтобы он работал во всех браузерах, вы можете использовать javascript. Здесь пример.
Вот мое решение на основе 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();
}
}
});
ссылка для IE8: http://jsfiddle.net/hjPPn/show
Вы также можете использовать javascript, что намного проще:
<textarea name="question" cols="100" rows="8" maxlength="500px" onKeyPress="return ( this.value.length < 1000 );"></textarea>
Используйте следующий JQuery - например, если вы хотите ограничить длину до 48
$("textarea").keypress(function(e){
var lengthF = $(this).val();
if (lengthF.length > 48){
e.preventDefault();
}
});