Jquery / JS привязывают обработчик события «вставить» к текстовому полю ввода - PullRequest
14 голосов
/ 12 марта 2011

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

$("#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 не будет работать, это должно произойти, как только вы вставите)

Ответы [ 3 ]

45 голосов
/ 12 марта 2011

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

3 голосов
/ 12 марта 2011

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

setTimeout(function() { $("#attack-max-capacity").text(getMaxCapacity()); }, 0);
1 голос
/ 09 июля 2011

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

$("#attack-navy"+unit.ID+"-number").live('paste', function(){
            alert("paste detected");
            $("#attack-max-capacity").text(getMaxCapacity());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...