События ввода формы для сенсорной панели Macbook

Есть ли события, которые запускаются на form элементы, когда пользователь вводит данные через MacBook Touch Bar?

Вот тривиальный пример:

<textarea id="textarea"></textarea>

(function($) {
  $('#textarea')
    .on('keyup', function() {
      console.log('keyup');
    })
    .on('keydown', function() {
      console.log('keydown');
    })
    .on('keypress', function() {
      console.log('keypress')
    });
})(jQuery);

В Safari, когда я "печатаю" с помощью сенсорной панели (например, нажимая на смайлики или автоматически вводимый текст), я не вижу никаких событий в консоли веб-инспектора. Тем не менее, обычная клавиатура будет срабатывать keydown, keypress, а также keyup события, как и ожидалось.

1 ответ

Решение

Не похоже, что сенсорная панель запускает ключевые события.

Альтернативой было бы слушать input событие

Как указано в соответствующей документации MDN, событие вызывается при каждом изменении значения, что означает, что оно будет работать, когда сенсорная панель изменит input/textarea значение.

Событие ввода DOM запускается синхронно, когда значение <input> или же <textarea> элемент изменен.

Использование:

document.querySelector('textarea').addEventListener('input', function (event) {
    // ...
});

или же...

$('textarea').on('input', function (event) {
  // ...
});
Другие вопросы по тегам