Захват события «вставить» — или обходной путь — с помощью javascript

#javascript #jquery #event-handling #paste

#javascript #jquery #обработка событий #вставить

Вопрос:

У меня есть скрипт поиска AJAX, который я создаю, и он выдает результаты в режиме реального времени — проблема в том, что я не могу запустить свою функцию поиска, если входные данные вводятся с помощью метода вставки правой кнопкой мыши.

Я пробовал onchange, и я пробовал события изменения jquery — nada. Затем я попробовал событие onmouseup, но оказалось, что оно запускается за пределами элемента ввода, потому что меню, вызываемое правой кнопкой мыши, выходит за его границы, если это имеет смысл.

Я решил, что, вероятно, смогу выполнить это с помощью обработчика щелчков по всему документу, который проверяет, не превышает ли длина значения входного текстового элемента 0 при его срабатывании, но это кажется неаккуратным и излишним.

У кого-нибудь есть лучшее предложение?

Ответ №1:

Попробуйте paste событие.

 $('input[type="text"]').bind('paste', function() { ... });
  

Комментарии:

1. Не знал, что это существует, попробую как можно скорее.

2. Вы не закрыли свою $ parenthesis — если кому-то еще это понадобится позже, обязательно добавьте это.

3. Ну, кажется, это работает, если в поле ввода уже есть текст, например, если есть имя, и я выделяю его и щелкаю правой кнопкой мыши, чтобы вставить имя, это срабатывает — однако, если я первым делом щелкаю правой кнопкой мыши, чтобы вставить, прежде чем делать что-либо еще на странице, это не срабатывает… Я в замешательстве

4. Ах, я понял это, функция вставки запускается до того, как вставка действительно произойдет (вот почему она работала, когда что-то уже было в поле, а затем было выбрано и вставлено), поэтому мне пришлось добавить короткий тайм-аут, и теперь это работает нормально, спасибо за помощь.