Ответ 1
Вы должны обрабатывать события input
и propertychange
.
Демо.
Хорошо, у меня есть окно ввода, и мне нужно делать что-то каждый раз, когда оно меняется, у меня возникают проблемы с этим для мыши. Вот код, который у меня есть
$("#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 не будет работать, это должно произойти, как только вы вставьте)
Вы должны обрабатывать события input
и propertychange
.
Демо.
Ты прав. Событие вставки запускается перед изменением значения ввода. Попробуйте обернуть обработчик в тайм-аут:
setTimeout(function() { $("#attack-max-capacity").text(getMaxCapacity()); }, 0);
Замените событие привязки на .live, и он должен работать, например:
$("#attack-navy"+unit.ID+"-number").live('paste', function(){
alert("paste detected");
$("#attack-max-capacity").text(getMaxCapacity());
});