Spec-Zone.ru › Web APIs

Элемент: событие beforeinput

Базовая линия Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Событие DOM beforeinput срабатывает, когда значение элемента <input> или <textarea> собирается измениться. Однако в отличие от события input, оно не срабатывает для элемента <select>. Событие также применяется к элементам с включённым contenteditable и к любому элементу, когда включён designMode.

Это позволяет веб-приложениям переопределять поведение редактирования текста до того, как браузер изменит дерево DOM, и обеспечивает больший контроль над событиями ввода для повышения производительности.

В случае contenteditable и designMode, целевым объектом события является **элемент-хост редактирования**. Если эти свойства применяются к нескольким элементам, элементом-хостом редактирования является ближайший родительский элемент, чьим родителем не является элемент для редактирования.

Примечание: Не каждое изменение, вносимое пользователем, приводит к срабатыванию события beforeinput. Также событие может сработать, но быть неотменяемым. Это может произойти, когда изменение выполняется автозаполнением, при принятии исправления от словаря, при автозаполнении менеджером паролей, IME или другими способами. Подробности различаются в зависимости от браузера и операционной системы. Чтобы переопределить поведение редактирования во всех ситуациях, код должен обрабатывать событие input и, возможно, отменить любые изменения, которые не были обработаны обработчиком beforeinput. См. ошибки 1673558 и 1763669.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика события.

addEventListener("beforeinput", (event) => {});

onbeforeinput = (event) => {};

Тип события

Объект InputEvent. Наследуется от UIEvent.

Событие UIEvent InputEvent

Свойства события

Этот интерфейс наследует свойства от своих родительских элементов, UIEvent и Event.

InputEvent.data Только для чтения

Возвращает строку с вставленными символами. Может быть пустой строкой, если изменение не вставляет текст (например, при удалении символов).

InputEvent.dataTransfer Только для чтения

Возвращает объект DataTransfer, содержащий информацию о форматированном или простом тексте, добавляемом или удаляемом из редактируемого содержимого.

InputEvent.inputType Только для чтения

Возвращает тип изменения редактируемого содержимого, например, вставка, удаление или форматирование текста.

InputEvent.isComposing Только для чтения

Возвращает значение Boolean, указывающее, срабатывает ли событие после compositionstart и перед compositionend.

Примеры

Обнаружение функции

Следующая функция возвращает true, если beforeinput, а значит, getTargetRanges, поддерживается.

function isBeforeInputEventAvailable() {
  return (
    window.InputEvent &&
    typeof InputEvent.prototype.getTargetRanges === "function"
  );
}

Простой логировщик

Этот пример записывает текущее значение элемента непосредственно перед заменой этого значения новым значением, применённым к элементу <input>.

HTML

<input placeholder="Enter some text" name="name" />
<p id="values"></p>

JavaScript

const input = document.querySelector("input");
const log = document.getElementById("values");

input.addEventListener("beforeinput", updateValue);

function updateValue(e) {
  log.textContent = e.target.value;
}

Результат

Спецификации

Спецификация
События UI
# event-type-beforeinput

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
beforeinput_event 60 79 87 47 10.1 60 87 44 10.3 8.0 60

См. также

  • Связанное событие: input

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/beforeinput_event

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API