Событие Jquery Mobile Paste для ввода текста
Я использую Jquery Mobile для разработки веб-приложения для Android и iPhone. Я хочу обработать событие, когда пользователи изменяют свое значение в поле ввода текста.
Изначально я использую .on("keyup change")
и все вроде нормально работает. Однако, когда пользователи вставляют некоторый текст в текстовое поле (удерживая и нажимая "Вставить"), мой обработчик событий не вызывается.
Пожалуйста, помогите мне, если вы знаете, как решить эту проблему.
Спасибо вам всем.
2 ответа
Работает на всех браузерах, но не на FireFox.
$('input').on('paste', function (e) {
if (e.originalEvent.clipboardData) {
var text = e.originalEvent.clipboardData.getData("text/plain");
$('p').empty();
$('p').append(text);
}
});
Кредит идет на: jQuery Обнаружение Вставить событие в любом месте на странице и "перенаправить" его в Textarea
Для Android добавьте тайм-аут, как в этом примере http://ajax911.com/numbers-numeric-field-jquery/
Для iPad добавьте событие 'change' вместе с paste, работающим на iphone
Вот что у меня сработало на мобильных Safari и Chrome.
if (document.getElementById('search_input')) {
document.querySelector('#search_input').addEventListener('paste', (e) => {
let pasteData = (e.clipboardData || window.clipboardData).getData('text');
pasteData = pasteData.replace(/[^\x20-\xFF]/gi, '');
window.setTimeout(() => {
//do stuff
});
});
}