JS об'єкт InputEvent


Загальний опис

Подія input у JavaScript є подією для відстеження змін введення в текстових полях, таких як <input> або <textarea>. Вона спрацьовує щоразу, коли користувач змінює значення поля вводу, незалежно від того, чи ввів символ на клавіатурі, вставив текст, чи видалив символ. Це корисний інструмент для випадків, коли потрібне динамічне оновлення даних у реальному часі, наприклад, для показу підказок або автоматичної валідації введених даних.

Щоб почати використовувати input подію, потрібно додати слухача події на елемент за допомогою методу addEventListener. Приклад коду:

const inputField = document.querySelector('#textInput');
inputField.addEventListener('input', function(event) {
 console.log(event.target.value);
});

У цьому прикладі слухач події input реагує на зміни в полі #textInput і кожен раз виводить в консоль поточне значення текстового поля. Це дозволяє отримати значення безпосередньо після кожної зміни, що корисно для реактивного відображення, наприклад, для відображення пошукових підказок або візуалізації результату в режимі реального часу.

Сама подія input має різницю з подією change: input реагує на кожну зміну під час введення, тоді як change спрацьовує лише тоді, коли користувач завершує введення і залишає поле (натискає Enter або клікає за межі поля). Це робить input придатною для сценаріїв, де важливо моментально реагувати на кожну зміну, наприклад, для валідації або відображення відповідних результатів при введенні тексту.

Подія input також передає об'єкт event, який дозволяє отримати більше даних про подію. Основні властивості об'єкта event включають target, що вказує на елемент, з яким сталася подія, та target.value, яке містить поточне значення поля введення.

автор: Bond

Порада

Якщо вам не потрібно обробляти зміни в режимі реального часу, оберіть подію change замість input, оскільки change виконується лише після завершення введення, що може зменшити навантаження на браузер.

автор: Bond
Порада

Для обмеження частоти виклику обробника input події при швидкому введенні, використовуйте debounce. Це обмежить кількість викликів і зробить додаток більш плавним. Наприклад, через lodash можна застосувати _.debounce(), або написати власну функцію.

автор: Bond
Порада

Якщо необхідно обмежити введення певним форматом, наприклад, тільки цифри, додайте просту валідацію всередині обробника події input з умовою або регулярним виразом. Це допоможе негайно блокувати непотрібні символи і підвищить точність введення.

автор: Bond

Синтаксис

element.addEventListener('input', function(event) {
 // Ваш код
});

методи

Метод Опис
getTargetRanges Повертає масив діапазонів (`Range`), які представляють виділений текст або область, пов'язану з подією вводу в документі. Використовується головним чином з подіями редагування для визначення текстових діапазонів, на які впливають зміни.

властивості

Властивість Опис
isComposing Визначає, чи перебуває користувач у процесі введення складного тексту, наприклад, за допомогою редактора для складання символів (IME) для мов, що потребують складного вводу (як-от японська або китайська). Значення `true` означає, що введення ще не завершене.
inputType Вказує на тип виконаної дії під час події введення, наприклад, `insertText`, `deleteContentBackward` або `insertLineBreak`. Це дозволяє точно визначати, яка саме зміна була внесена до текстового вмісту.
dataTransfer Містить об'єкт `DataTransfer`, пов’язаний із подією, який надає доступ до даних, що перетягуються під час дій копіювання, вирізання або вставки. Це використовується для обробки перетягування файлів або тексту в область введення.
data Містить текстові дані, які були додані до поля вводу під час події `input`, наприклад, символ або рядок, вставлений користувачем. Значення може бути `null`, якщо подія не передає текстових даних.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
60 31 10.1 47 79
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
60 60 31 10.3

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі input подія використовується для створення пошукової системи в реальному часі. Коли користувач вводить запит у поле пошуку, код динамічно фільтрує список даних і показує результати, які відповідають запиту. Це ідеально підходить для систем, де потрібен миттєвий пошук за кількома параметрами.

HTML

<input type="text" id="searchInput" value="текст для прикладу" placeholder="Введи щось">
<div id="results">Демонстраційний елемент</div>

JS

const inputField = document.querySelector('#searchInput');
const resultsContainer = document.querySelector('#results');

inputField.addEventListener('input', function(event) {
 const query = event.target.value.toLowerCase();
 const filteredResults = data.filter(item => item.includes(query));
 resultsContainer.innerHTML = filteredResults.join('<br>');
});
автор: Bond

У цьому прикладі input подія використовується для динамічної оцінки надійності паролю під час його введення. Обробник визначає довжину введеного паролю і оновлює текст індикатора на Weak, Medium або Strong у залежності від поточної кількості символів. Це дає користувачеві миттєвий зворотній зв’язок щодо безпеки паролю.

HTML

<input type="password" id="password" value="" placeholder="Введи щось">
<div id="strengthIndicator">Демонстраційний елемент</div>

JS

const passwordField = document.querySelector('#password');
const strengthIndicator = document.querySelector('#strengthIndicator');

passwordField.addEventListener('input', function(event) {
 const strength = event.target.value.length;
 if (strength > 8) {
   strengthIndicator.textContent = 'Strong';
 } else if (strength > 4) {
   strengthIndicator.textContent = 'Medium';
 } else {
   strengthIndicator.textContent = 'Weak';
 }
});
автор: Bond

Цей приклад надає користувачеві зворотний зв'язок під час введення паролю. Паролі, що містять великі літери, цифри та більше восьми символів, вважаються "сильними", від чотирьох до восьми — "середніми", а коротші — "слабкими". Інтерактивний індикатор змінює текст та колір, залежно від надійності паролю.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід