JQuery / JS bind "wklej" Obsługa zdarzenia do pola tekstowego

Dobra, więc mam pole wprowadzania i muszę robić rzeczy za każdym razem, gdy się zmienia, mam problem z zrobieniem tego dla pasty mysz. Oto kod, który mam

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

Funkcja getMaxCapacity() Zwraca numer wprowadzony * 30 na razie;

Oto scenariusz, gdy
1: wklejam 3, nie zmieni się (nadal widzę alert)
2: wtedy jak wkleję 5, to będzie 90 (3 * 30)
3: wtedy jak wkleję 10 to będzie 150 (5 * 30) i tak dalej.

Myślę, że to robi handler zanim pasta faktycznie wystąpi. Jakieś pomysły, co mogę zrobić? (.zmiana nie będzie działać, musi się zdarzyć tak szybko, jak u wklej)

Author: Ave, 2011-03-12

3 answers

Powinieneś obsługiwać zdarzenia input i propertychange.
Demo .

 45
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-11 21:59:31

Masz rację. Zdarzenie paste zostanie wywołane przed zmianą wartości wejściowej. Spróbuj zawijać swojego opiekuna w timeout:

setTimeout(function() { $("#attack-max-capacity").text(getMaxCapacity()); }, 0);
 3
Author: tilleryj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-11 22:01:13

Zastąp Zdarzenie bind .żyć i powinno działać tak:

$("#attack-navy"+unit.ID+"-number").live('paste', function(){
            alert("paste detected");
            $("#attack-max-capacity").text(getMaxCapacity());
});
 1
Author: karev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-10 10:58:53