События ввода формы для сенсорной панели 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) {
// ...
});