Справочник API

.keypress() в jQuery

Содержание статьи
  • Категории: Events › Keyboard Events

    Устанавливает (или вызывает) обработчики JavaScript события keypress, когда последовательно нажата (keydown) и отпущена (keyup) клавиша на клавиатуре, для всех элементов набора jQuery.

Синтаксис и описание:

  • Добавлено в jQuery 1.0.keypress( handler( eventObject ) )

  • Добавлено в jQuery 1.4.3.keypress( [ eventData ,] handler( eventObject ) )

  • Добавлено в jQuery 1.0.keypress( )

  • Команда .keypress() — сокращённый вариант события keypress, которое браузер генерировал при вводе символа. В отличие от .keydown(), событие keypress не срабатывает для служебных клавиш без символа (Shift, Ctrl, Escape, стрелки, Delete) и не имело единого описания в спецификациях — поведение отличалось между браузерами.

Возвращаемое значение: (объект) Набор jQuery.

Параметры:

  • eventData – (объект) Данные, доступные обработчику через event.data.

  • handler( eventObject ) – Функция-обработчик события keypress. В event.which для этого события — код символа, а не код клавиши (например, для строчной "a" — 97, а не 65, как в keydown/keyup).

  1. Примечание:

    Событие keypress объявлено устаревшим и в спецификации DOM, и в документации MDN — браузеры продолжают его поддерживать, но новый код рекомендуется писать на keydown или на событии beforeinput/input, у которых предсказуемое поведение и явная поддержка международного ввода (составные раскладки, IME).

  2. Примечание:

    Для отслеживания фактического текста, который получится в поле после ввода (включая вставку из буфера обмена и автозамену), надёжнее нативное событие input — оно срабатывает после того, как значение поля уже изменилось, а не до этого, как keypress.

  3. В jQuery 3.x и 4.0:

    Шорткат .keypress() deprecated в jQuery с 3.3, но не удалён — работает в 3.7.1 и 4.0 (замена — .on("keypress", handler)). Отдельно от статуса в jQuery, само событие keypress помечено устаревшим на уровне браузерных спецификаций и MDN — для нового кода предпочтительны keydown или beforeinput/input, независимо от версии jQuery.

Примеры:

  1. Устаревший, но пока рабочий вариант: запретить ввод цифр в текстовое поле.

    $('#name').keypress(function(event) {
      if (event.which >= 48 && event.which <= 57) {
        event.preventDefault();
      }
    });
  2. Тот же результат через современный .on().

    $('#name').on('keypress', function(event) {
      if (event.which >= 48 && event.which <= 57) {
        event.preventDefault();
      }
    });
  3. Более надёжная альтернатива без keypress: проверять уже введённое значение по событию input, что корректно работает и при вставке текста мышью.

    $('#name').on('input', function() {
      $(this).val($(this).val().replace(/[0-9]/g, ''));
    });

[ наверх ]

Вопросы и ответы

Для чего используется .keypress() в jQuery?

Устанавливает (или вызывает) обработчики JavaScript события keypress, когда последовательно нажата (keydown) и отпущена (keyup) клавиша на клавиатуре, для всех элементов набора jQuery.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →