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)
3 answers
Powinieneś obsługiwać zdarzenia input
i propertychange
.
Demo .
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);
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());
});
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