Я, наконец, получил это для 1) набора текста, 2) перетаскивания, 3) Ctrl-V и 4) вставки из контекстного меню щелчком мыши, но мне пришлось прикрепить обработчики вставки и удаления документ (где «taValue» - это класс текстовых областей, которые я пытаюсь отслеживать):
$(document).on("paste drop", '.taValue', function (e) {
myHandler.call(e.target, e);
});
Событие keyup на textarea уже сработало. Следующая проблема состояла в том, что события вставки и удаления запускаются ПЕРЕД тем, как текст в текстовой области действительно изменяется. В моем случае я хотел сравнить новый текст с оригинальным текстом. Я прибег к setTimeout:
function myHandler(e) {
if (e && (e.type === "drop" || e.type === "paste")) {
var me = this;
setTimeout(function () { myHandler.call(me) }, 200);
}... [more code to do the comparison]
Я ненавижу использовать таймауты для подобных вещей, но это работает (когда я пробовал интервал в 100 мс, это не так).