Обработчик событий jQuery / JS bind "paste" для ввода текстового поля

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

$("#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) и так далее.

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

3 ответов


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


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

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

замените событие bind на .живи и работай, вот так:

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