Zajaxování samostatného inputu na onChange()

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
miler
Člen | 75
+
0
-

Dobrou noc všem :-) Chtěl bych vás poprosit o radu s ajaxem. Mám v šabloně komponenty samostatný input s ID „coef“, do kterého chci zadat hodnotu koeficientu, kterým budu přenásobovat proměnnou. Mám zatím toto:

<script type="text/javascript">
$.nette.ext('multiply', {
	load: function () {
		#('coef').change(function () {
			type: 'get',
			url: {link multiply!},
			data: {
				coef: $(this).val()
		        }
        });
    }
});
</script>

Což ale neprodukuje nic, ani žádný dotaz ve firebugu. Za správné konstelace by mi to mělo volat handle v komponentě a za běhu měnit ve výpisu výsledek výpočtu. $.nette.init() volám jinde.

Michal Vyšinský
Člen | 608
+
0
-

Možná překlep jen zde, ale jestli ne, tak je chyba zde:

#('coef').change(function ()

na

$('#coef').change(function ()

Edit: Osobně se divím, že ti firebug neukáže žádnou chybu, protože #() není funkce :)

Editoval CherryBoss (3. 2. 2013 15:28)

miler
Člen | 75
+
0
-

Díky. To jsem opravil a volání např. alertu už mi funguje. Pokud ale nechám vnitřek change funkce tak jak je tak to nedělá nic.

Pokud ho nahradím něčím jako:

<script>
var $url = {link multiply!};
$.get($url + "&multiplyComp-coef=" + $(this).val());
</script>

tak se mi požadavek na handler pošle, jednou. Pokud změním input podruhé tak už to neudělá nic.

A takto to funguje:

<script type="text/javascript">
$('body').on('change', '#coef', function(e) {
    var $url = {link multiply!};
    $.get($url + "&multiplyComp=" + $(this).val());
});
</script>

Editoval miler (4. 2. 2013 0:32)