Event pred a po ajaxe (nette.ajax.js)

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

Zdravim,
Mam obycajny formular ktory validujem a odosielam ajaxovo. Vsetko ide ako ma, avsak ma to jednu muchu. Rad by som bol, keby som po odoslani mohol zmenit classu submit buttonu na take to tocitko. Obvykle som to robil takto:

<script>
$("#form").on('submit', function(e) {
    e.preventDefault();
    // Pridame tocitko
    $.post(..., function() {
        // Odstranime tocitko
    });
});
</script>

Co je velmi jednoduche a zrozumitelne.
Problem je v tom, ze mometalne to urobit neviem.
Pouzivam plugin https://componette.org/search/?… a Nette vo verzii 2.1.
Myslim si, ze riesenie spociva v nastaveni potrebnych extensions v $.nette ale stale neviem prist na to, ze ako. Rad by som bol, aby callbacky pred a po ajaxovom poziadavku bolo mozne pridelit len konkretnemu formu a nie globalne.

Dakujem.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Nejlepší je navrnout si vhodné API, třeba ve formě datových atributů, a pak ano, napsat si extenzi :).

$.nette.ext({
	start: function (xhr, settings) {
		if (settings.nette) {
			var el;
			if (settings.nette.el.is('input[type="submit"],button')) {
				el = settings.nette.el;
			} else if (settings.nette.el.is('form')) {
				el = settings.nette.el.find('[data-spinner]');
			}

			if (el && el.is('[data-spinner]')) {
				// el is the button
				// make the magic to show spinner
				// ------------------------------
				// if the spinner should be removed after request
				// is done and button stays, do it like this:
				settings.nette.spinner = ...;
			}
		}
	},
	complete: function (xhr, status, settings) {
		if (settings.nette && settings.nette.spinner) {
			// here you cancel the spinner
		}
	}
});
cuchi
Člen | 17
+
0
-

Wow, dakujem, presne toto som potreboval!

Dakujem za rychlu odpoved.