- Rukovodstvo
- статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
- Счетчик символов для текстовых областей с помощью ванильного JavaScript
- В этом руководстве вы узнаете, как реализовать пользовательский счетчик символов для текстовых областей в JavaScript с нуля.
- Introduction
- Как реализовать счетчик символов в JavaScript
- Объявление переменных
- Реализация Логики
- Настройка Цвета Счетчика
- Вывод
- String: length
- Try it
- Value
- Description
- Examples
- Basic usage
- Strings with length not equal to the number of characters
- Assigning to length
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- Счетчик символов в реальном времени на JS
- Создание HTML формы
- Счетчик символов
- Стилизация формы
- JavaScript код
- Комментарии ( 0 ):
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Счетчик символов для текстовых областей с помощью ванильного JavaScript
В этом руководстве вы узнаете, как реализовать пользовательский счетчик символов для текстовых областей в JavaScript с нуля.
Introduction
*** счетчик символов *** — это удобная * функция пользовательского интерфейса*, которая отображает оставшееся количество символов, которые пользователь может ввести в текстовое поле — если текстовое поле ограничено относительно небольшим размером ввода (например, Ограничение Twitter на 280 символов в твите). Эта функция обычно используется вместе с элементами * текстовая область* и / или * поле ввода* для уведомления пользователя о количестве используемых и оставшихся символов.
В этой статье мы узнаем, как реализовать счетчик символов для текстовых областей в JavaScript с нуля.
Вероятно, самым известным примером счетчика символов является счетчик символов Twitter. Он уведомляет вас, когда длина вашего твита приближается и превышает 280 символов, но не мешает вам вводить больше символов. Эта функция широко популярна, потому что она не обрезает текст, когда вы вставляете фрагмент текста длиной более предписанной длины символов, и позволяет вам соответствующим образом спланировать, как вы будете разбивать его на несколько твитов!
К концу этой статьи вы сможете создать поле ввода, подобное этому:
Примечание: Весь код, используемый для создания формы, будет присутствовать в руководстве. Кроме того, исходный код и предварительный просмотр в реальном времени доступны на CodePen. . .
Как реализовать счетчик символов в JavaScript
Первое, что нам нужно настроить перед внедрением счетчика символов , — это базовая HTML-форма. Он будет содержать поле textarea и текст, представляющий счетчик символов. В нем отображается максимальное количество символов и количество оставшихся символов. Если допустимое количество символов превышено, текст меняет цвет на красный:
Объявление переменных
После создания базовой HTML-формы следующим шагом является * реализация логики счетчика символов с использованием JavaScript*. Первым шагом в создании логики JavaScript является определение наших переменных и получение компонентов ДОМЕНА , которые мы будем использовать позже. В частности, поле textarea и элемент span , отображающий счетчик символов:
let textArea = document.getElementById("textbox"); let characterCounter = document.getElementById("char_count"); const maxNumOfChars = 100;
textArea будет использоваться для добавления события, которое активирует логическую функцию. Есть множество событий, которые мы можем использовать, но “keyup” лучше всего подходит для этого варианта использования, поскольку он будет запускать логическую функцию каждый раз при нажатии клавиши — символ добавляется или удаляется из текстовой области . characterCounter используется для отображения счетчика символов, а maxNumOfChars определяет максимальное количество символов, которые может ввести пользователь.
Реализация Логики
Следующим шагом было бы создание фундаментальной логики, которая позволяет нам определять длину текста, введенного в “Текстовое поле”, а также вычитать длину из максимального количества выбранных нами символов. Вот как могла бы выглядеть структура логической функции :
А вот как выглядит реализация упомянутой структуры любить:
Примечание: Пожалуйста, имейте в виду, что count Characters() на данный момент не обрабатывает какой -либо стиль. Например, мы хотели бы изменить цвет счетчика на красный, когда приближается или превышается максимальное количество символов. Мы реализуем это через мгновение, так как это более субъективный тип добавления. . .
Наконец, для того, чтобы это сработало, мы должны добавить EventListener , который будет запускать / вызывать этот метод каждый раз, когда символ добавляется / удаляется из поля textarea с помощью события input . В качестве альтернативы мы можем вместо этого использовать события keyup или keydown :
textArea.addEventListener("input", countCharacters);
Настройка Цвета Счетчика
Мы хотели бы “предупредить” пользователя о превышении определенного максимального количества символов, а также о приближении к нему. Это легко достигается с помощью условных операторов, где мы проверяем, является ли “счетчик” меньше нуля или меньше, скажем, “20”, если мы хотим предупредить их о том, что они приближаются к пределу:
if (counter < 0) < characterCounter.style.color = "red"; >else if (counter < 20) < characterCounter.style.color = "orange"; >else
Здесь мы изменили текст только в зависимости от количества оставшихся символов. Там многое можно изменить. Например, вы можете отключить текстовое поле , если набрано слишком много символов, автоматически обрезать содержимое и так далее.
Вывод
В этом кратком руководстве мы рассмотрели, как создать счетчик символов и прикрепить его к текстовой области в JavaScript, с нуля, с минимальным и производительным кодом.
Licensed under CC BY-NC-SA 4.0
String: length
The length data property of a String value contains the length of the string in UTF-16 code units.
Try it
Value
Property attributes of String: length | |
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
Description
This property returns the number of code units in the string. JavaScript uses UTF-16 encoding, where each Unicode character may be encoded as one or two code units, so it’s possible for the value returned by length to not match the actual number of Unicode characters in the string. For common scripts like Latin, Cyrillic, wellknown CJK characters, etc., this should not be an issue, but if you are working with certain scripts, such as emojis, mathematical symbols, or obscure Chinese characters, you may need to account for the difference between code units and characters.
The language specification requires strings to have a maximum length of 2 53 — 1 elements, which is the upper limit for precise integers. However, a string with this length needs 16384TiB of storage, which cannot fit in any reasonable device’s memory, so implementations tend to lower the threshold, which allows the string’s length to be conveniently stored in a 32-bit integer.
- In V8 (used by Chrome and Node), the maximum length is 2 29 — 24 (~1GiB). On 32-bit systems, the maximum length is 2 28 — 16 (~512MiB).
- In Firefox, the maximum length is 2 30 — 2 (~2GiB). Before Firefox 65, the maximum length was 2 28 — 1 (~512MiB).
- In Safari, the maximum length is 2 31 — 1 (~4GiB).
For an empty string, length is 0.
The static property String.length is unrelated to the length of strings. It’s the arity of the String function (loosely, the number of formal parameters it has), which is 1.
Since length counts code units instead of characters, if you want to get the number of characters, you can first split the string with its iterator, which iterates by characters:
function getCharacterLength(str) // The string iterator that is used here iterates over characters, // not mere code units return [. str].length; > console.log(getCharacterLength("A\uD87E\uDC04Z")); // 3
Examples
Basic usage
const x = "Mozilla"; const empty = ""; console.log(`$x> is $x.length> code units long`); // Mozilla is 7 code units long console.log(`The empty string has a length of $empty.length>`); // The empty string has a length of 0
Strings with length not equal to the number of characters
const emoji = "😄"; console.log(emoji.length); // 2 console.log([. emoji].length); // 1 const adlam = "𞤲𞥋𞤣𞤫"; console.log(adlam.length); // 8 console.log([. adlam].length); // 4 const formula = "∀𝑥∈ℝ,𝑥²≥0"; console.log(formula.length); // 11 console.log([. formula].length); // 9
Assigning to length
Because string is a primitive, attempting to assign a value to a string’s length property has no observable effect, and will throw in strict mode.
const myString = "bluebells"; myString.length = 4; console.log(myString); // "bluebells" console.log(myString.length); // 9
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on May 31, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
Счетчик символов в реальном времени на JS
Авторам статей или коммерческих текстов удобно писать и сразу видеть сколько символов уже написано. Ведь от этого зависит, сколько денег в итоге они получат. Такой скрипт легко встраивается на сайт и человек пишет свой текст в HTML форме.
Создание HTML формы
Подсчет символов происходит внутри поля textarea с помощью события onkeyup. Событие onkeyup возникает в момент отпускания нажатой клавиши. На событие вешается функция countLetters(), в которой последовательно записаны инструкции для браузера, что конкретно нужно делать.
Счетчик символов
Всего символов: 0
Стилизация формы
Добавим к форме CSS стили для визуальной эстетичности.
@import url(«https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap»);
* margin: 0;
padding: 0;
box-sizing: border-box;
font-family: «Poppins», sans-serif;
>
body display: flex; / * включение flexbox * /
justify-content: center; / * центрирование по горизонтали * /
align-items: center; / * центрирование по вертикали * /
min-height: 100vh; / * на всю высоту экрана * /
background: #FFF8E1; / * цвет фона страницы * /
>
.container width: 550px; / * ширина контейнера * /
padding: 40px; / * поля внутри контейнера * /
background: #FFCCBC; / * цвет фона контейнера * /
display: flex;
flex-direction: column; / * расположение элементов в колонке * /
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); / * тень у контейнера * /
>
.container h3 font-size: 2em;
margin-bottom: 10px; / * отступ между заголовком и полем * /
color: #333;
>
.container textarea position: relative; / * относительное позиционирование * /
margin-bottom: 20px;
resize: none; / * запрет на изменения размеров поля * /
width: 100%;
height: 200px;
padding: 10px;
outline: none;
font-size: 18px;
border: none;
>
p display: flex;
align-items: center;
font-size: 20px;
color: #333;
>
.container .count font-size: 24px;
color: #f00;
margin-left: 10px;
font-weight: 500;
font-weight: 600;
>
JavaScript код
Находим в документе нужные нам элементы, которые будут непосредственно задействованы в подсчитывании символов. Найденные теги textarea и span с классом count, занесем в переменные textarea и count. Далее пишем действия в теле функции, внутри фигурных скобок.
- #1 — вводимые пользователем символы записываются в переменную text.
- #2 — браузер разбивает вводимые символы на соответствующий код и определяет их длину.
- #3 — осуществляется вывод на HTML странице подсчитанного количества символов на текущих момент.
function countLetters() const text = textarea.value; // #1
const textlength = textarea.value.length; // #2
count.innerText = `$`; // #3
>
Создано 18.08.2021 10:43:33
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.