Максимальная длина HTML <textarea>

Как ограничить максимальное количество символов, которое можно ввести в HTML <textarea>? Ищу кроссбраузерное решение.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
16
0
17 438
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Тег TEXTAREA не имеет атрибута MAXLENGTH, в отличие от тега INPUT. Тег TEXTAREA работает, по крайней мере, не в большинстве стандартных браузеров. Очень простой и эффективный способ ограничить количество символов, которые могут быть напечатанный в теге onKeyPress:

<textarea onKeyPress = "return ( this.value.length < 50 );"></textarea>

Примечание:false, предотвращает нажатие любой кнопки, любая кнопкавключая - клавиша возврата.

Это работает, потому что логическое выражение сравнивает длину поля перед добавлением нового символа к максимальной длине, которую вы хотите (50 в этом примере, используйте здесь свой собственный), и возвращает true, если есть место для еще одного, KeyPress, если нет. Возврат false из большинства событий отменяет действие по умолчанию. Итак, если текущая длина уже равна 50 (или больше), обработчик возвращает false, действие TEXTAREA отменяется, а символ не добавляется.

Одна ложка дёгтя - возможность вклеивания в KeyPress, который не вызывает событие onPaste, обходя эту проверку. Internet Explorer 5+ содержит событие onPaste, обработчик которого может содержать контрольный. Однако обратите внимание, что вы также должны учитывать, сколько персонажи ждут в буфере обмена, чтобы узнать, будет ли общая сумма взять вас за предел или нет. К счастью, IE также содержит буфер обмена. объект из оконного объекта. 1 Таким образом:

<textarea onKeyPress = "return ( this.value.length < 50 );"
onPaste = "return (( this.value.length +
window.clipboardData.getData('Text').length) < 50 );"></textarea>

Опять же, событие clipboardData и объект OnChange относятся только к IE 5+. Для кроссбраузерного решения вам просто нужно будет использовать обработчик OnBlur или TEXTAREA, чтобы проверить длину и обработать ее так, как вы хотите (беззвучно усечь значение, уведомить пользователя и т. д.). К сожалению, это не обнаруживает ошибку, поскольку она происходит, только когда пользователь пытается покинуть поле, что не так удобно.

Источник

Кроме того, здесь есть другой способ, включая готовый скрипт, который вы можете включить на свою страницу:

http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html

Обратите внимание, что описанная выше функция onKeyPress предотвратит ввод любого текста в текстовое поле после достижения предела символов - никакие символы не могут быть удалены. Более надежный фрагмент позволит пользователю достичь максимального предела, а затем вернуться на место, чтобы удалить символы, чтобы получить текст ниже предела.

shek 24.01.2010 10:47

Возможно, это только я и моя плохая арифметика, но у меня сложилось впечатление, что при использовании новых строк в текстовых областях IE и FF ведут себя иначе, чем Chrome в отношении maxlength. Имеет отношение к проблеме \r\n vs. \n (когда ваш текст содержит символы новой строки) ... Определенно, maxlength, похоже, не работает кроссбраузерно в Windows, по моему опыту ... Но здесь нет ничего нового, все та же старая глючный HTML / JS материал ...

user2173353 14.10.2015 11:48

HTML5 теперь позволяет Атрибут maxlength на <textarea>.

Он поддерживается всеми браузерами, кроме IE <= 9 и iOS Safari 8.4. См. таблица поддержки на caniuse.com.

@erdomester Он работает в поддерживаемых браузерах. Вы можете протестировать по ссылке w3c, которую я предоставил.

indusBull 30.01.2013 22:45

Я попробовал, и он работает, даже если я использовал maxlength = "500px". Но предоставленная вами ссылка была неактивной, когда я опубликовал этот комментарий, и отображаемая страница (я полагаю) показывала другие атрибуты, чем та, которая отображается сейчас.

erdomester 30.01.2013 23:17

Эта ссылка не на W3C, а на W3Schools, который известен тем, что публикует неверную информацию.

Toby 15.04.2013 12:55

@Toby да, ты прав. Я должен был быть более ясным в своем комментарии. К сожалению, я не вижу возможности редактировать комментарий.

indusBull 06.09.2013 19:53

Для erdomester: maxlength для textarea работает нормально, но синтаксис maxlength = "500", а не 500px.

bender 08.09.2013 13:09

Вы можете знать, что символы новой строки могут подсчитываться по-разному при использовании maxlength, в зависимости от браузера. Взгляните на это объяснение для получения дополнительной информации.

Scott 09.09.2016 22:29

$(function(){  
  $("#id").keypress(function() {  
    var maxlen = 100;
if ($(this).val().length > maxlen) {  
  return false;
}  
})
});  

Ссылка Установить максимальную длину в Html Textarea

Другие вопросы по теме