Событие 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

  1. Для Android добавьте тайм-аут, как в этом примере http://ajax911.com/numbers-numeric-field-jquery/

  2. Для 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
        });
    });
}
Другие вопросы по тегам