JS властивість Event.keypress


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

Подія keypress спрацьовує кожного разу, коли користувач натискає клавішу, що генерує символ. Це означає, що подія не буде викликана для клавіш управління, таких як Ctrl, Shift, Esc, або стрілки. Основна мета події — обробка введення символів з клавіатури в реальному часі. Її часто використовують для фільтрації введених даних або реагування на певні символи.

Один із важливих аспектів keypress полягає в тому, що вона викликається до того, як символ з'являється в полі введення. Таким чином, можна запобігти введенню небажаних символів. Основні властивості об'єкта event, які корисні при роботі з keypress, це:

  • event.key: містить символ клавіші, яку натиснули.
  • event.charCode: повертає ASCII код символу, якщо такий є.
  • event.preventDefault(): можна використовувати, щоб запобігти введенню певних символів.

Приклад використання:

document.addEventListener('keypress', function(event) {
  console.log('Натиснута клавіша: ' + event.key);
});

Важливо відзначити, що подія keypress більше не рекомендована до використання для сучасних веб-додатків, оскільки вона застаріла і має обмежену підтримку. Її замінюють події keydown та keyup, які є більш універсальними і підтримують не лише символи, але й спеціальні клавіші.

Якщо потрібно обмежити введення тільки певних символів, наприклад, чисел, можна використовувати keypress для перевірки символу перед тим, як він з'явиться в полі:

document.addEventListener('keypress', function(event) {
  if (!/\d/.test(event.key)) {
    event.preventDefault(); // Блокуємо все, крім цифр
  }
});

Незважаючи на це, keypress все ще може бути корисною для старіших систем або додатків, які не потребують складної обробки клавіатури. Проте сучасним стандартом є використання подій keydown або input для подібних завдань.

автор: Bond

Порада

Якщо вам потрібно обробляти клавіші, що не генерують символи (наприклад, стрілки або функціональні клавіші), краще використовувати keydown, оскільки keypress працює тільки з клавішами, які генерують символи.

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

Застарілі браузери можуть мати різні версії події keypress, тому, якщо потрібно підтримувати старіші платформи, перевіряйте коди символів через event.charCode і порівнюйте з event.keyCode.

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

keypress більше не рекомендується для сучасних веб-додатків, тому варто поступово переходити на події keydown і keyup для універсальної обробки клавіш.

автор: Bond

Синтаксис

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

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
66 57 11.1 53 16
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
66 66 57 11.3
Підтримка: серверні переглядачі
Переглядач Node.js Deno
15.0.0 1.0

Приклади

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

Цей приклад дозволяє користувачу вводити лише цифри в поле введення. При натисканні будь-якого іншого символу, подія keypress спрацьовує і блокує введення цього символу через метод preventDefault().

HTML

<input type="number" id="numberInput" value="10">

JS

const inputField = document.getElementById('numberInput');

inputField.addEventListener('keypress', function(event) {
  if (!/[0-9]/.test(event.key)) {
    event.preventDefault(); // Забороняє введення будь-яких символів, окрім цифр
  }
});
автор: Bond

Цей приклад демонструє, як можна перетворювати введені символи у верхній регістр в реальному часі за допомогою події keypress. Кожен введений символ відображається як велика літера, незалежно від того, у якому регістрі його було введено.

HTML

<input type="text" id="uppercaseInput" value="текст для прикладу" placeholder="Введи щось">

JS

const inputField = document.getElementById('uppercaseInput');

inputField.addEventListener('keypress', function(event) {
  event.preventDefault(); // Забороняємо стандартну поведінку
  inputField.value += event.key.toUpperCase(); // Додаємо символ у верхньому регістрі
});
автор: Bond

У цьому прикладі подія keypress використовується для того, щоб дозволити користувачу вводити лише літери. Якщо натискається будь-яка інша клавіша (цифра або спеціальний символ), введення блокується. Текст, який користувач вводить у поле, автоматично перетворюється на верхній регістр і відображається під полем у реальному часі.

автор: Bond

Коментарі

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

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

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

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

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

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

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

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

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

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

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