Максимальная длина для HTML <textarea>
-
09-06-2019 - |
Вопрос
Как ограничить максимальное количество символов, которые могут быть введены в HTML <textarea>
?Я ищу кроссбраузерное решение.
Решение
Тот Самый TEXTAREA
тег не имеет MAXLENGTH
приписывайте способ, которым
INPUT
тег работает, по крайней мере, не в большинстве стандартных браузеров.Очень простой и эффективный способ ограничить количество символов, которые могут быть напечатанный в TEXTAREA
тег - это:
<textarea onKeyPress="return ( this.value.length < 50 );"></textarea>
Примечание: onKeyPress
, будет препятствовать любому нажатию кнопки, любая кнопка включая клавиша обратного пробела.
Это работает, потому что логическое выражение сравнивает длину поля
перед добавлением нового символа с максимальной длиной, которую вы хотите (50 в этом примере, используйте здесь свой собственный), и возвращает true, если есть место для еще одного символа, false
если нет.Возврат false из большинства событий отменяет действие по умолчанию.Так, если текущая длина составляет уже 50 (или больше), обработчик возвращает false,
в KeyPress
действие отменено, и персонаж не добавлен.
Одной ложкой дегтя в бочке меда является возможность вставки в TEXTAREA
,
который не вызывает KeyPress
событие для запуска в обход этой проверки.Internet Explorer 5+ содержит onPaste
событие, обработчик которого может содержать проверку
.Однако обратите внимание, что вы также должны учитывать, сколько
символов ожидают в буфере обмена, чтобы узнать, превысит ли общее количество
ваш лимит или нет.К счастью, IE также содержит буфер обмена
объект из объекта window.1 Таким образом:
<textarea onKeyPress="return ( this.value.length < 50 );"
onPaste="return (( this.value.length +
window.clipboardData.getData('Text').length) < 50 );"></textarea>
Опять же, тот onPaste
событие и clipboardData
объектом являются только IE 5+.Для кроссбраузерного решения вам просто нужно будет использовать OnChange
или OnBlur
обработчик для проверки длины и обработки ее так, как вы хотите (автоматически усекайте значение, уведомляйте пользователя и т.д.).К сожалению, это не улавливает ошибку в том виде, в каком она происходит, только когда пользователь пытается покинуть поле, что не совсем удобно.
Кроме того, здесь есть другой способ, включающий готовый скрипт, который вы могли бы включить на свою страницу:
http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html
Другие советы
HTML5 теперь позволяет maxlength
атрибут на <textarea>
.
Он поддерживается всеми браузерами, кроме IE <= 9 и iOS Safari 8.4.Видишь опорный стол на caniuse.com.
$(function(){
$("#id").keypress(function() {
var maxlen = 100;
if ($(this).val().length > maxlen) {
return false;
}
})
});
Ссылка Установите максимальную длину в текстовой области Html