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
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
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
}
}
});