Jquery/JS привязывает обработчик событий "вставить" для ввода текстового поля

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

$("#attack-navy"+unit.ID+"-number").bind('paste', function(){
            alert("paste detected");
            $("#attack-max-capacity").text(getMaxCapacity());
});

теперь возвращается возвращаемый номер функции getMaxCapacity() * 30,

Вот сценарий, когда
1: Я вставлю 3, он не изменится (я все еще вижу предупреждение)
2: Затем, когда я вставлю 5, это будет 90 (3 * 30)
3: Затем, если я вставлю 10, это будет 150 (5 * 30) и так далее.

Я думаю, что он делает обработчик до того, как на самом деле происходит паста. Любые идеи о том, что я могу сделать? (.change не будет работать, это должно произойти, как только вы вставьте)

Ответы

Ответ 1

Вы должны обрабатывать события input и propertychange.
Демо.

Ответ 2

Ты прав. Событие вставки запускается перед изменением значения ввода. Попробуйте обернуть обработчик в тайм-аут:

setTimeout(function() { $("#attack-max-capacity").text(getMaxCapacity()); }, 0);

Ответ 3

Замените событие привязки на .live, и он должен работать, например:

$("#attack-navy"+unit.ID+"-number").live('paste', function(){
            alert("paste detected");
            $("#attack-max-capacity").text(getMaxCapacity());
});