Ajax form – naznačenie odosielania
- Matey
- Člen | 142
Zdravím, ako rozbehnem niečo takéto
$("form").submit(function() {
var el = $(this).find(":submit, :image");
el.attr("disabled", "disabled");
el.val( " Odosiela sa..." );
setTimeout(function() {
el.attr("disabled", "");
el.val( "Odoslať" );
}, 5000);
});
ak formulár odosielam ajaxom?
ide o klasický kontaktný formulár (spracovanie trvá istý čas – odoslanie emailu), chcel by som ho odosielať ajaxovo (používam nette.ajax.js)
skúšal som to dať do $.nette.ext() ale neviem si s tým rady.. ďakujem za pomoc
- Šaman
- Člen | 2659
Jestli si chceš psát vlastní JS, tak to nesouvisí s Nette. Jestli ti jde
jen o ajaxové odeslání formuláře (a v rámci zpracování budeš
i odesílat email), tak si nastuduj ajaxové formuláře – ten JS vyhoď,
jen inicializuj nette.ajax.js
a formuláři přidej třídu
ajax
. Pak ty maily řeš v normální submit metodě.
- Matey
- Člen | 142
ďakujem za reakciu ale asi som nepoložil dobre otázku, s ajax formulárom problém nemám. Spracovanie furmuláru trvá asi 3 sekundy (kvoli tomu že sa počas toho musí odoslať mail). To je už dosť dlhá doba kedy sa návštevníkovi zdá že sa nič nedeje a odošle formulár znovu.
Jednoducho ani po hodinách skúšania neviem ako správne napísať jQuery ktoré by na pár sekúnd zablokovalo znovu odoslanie ajaxového formuláru.
- petr.jirous
- Člen | 128
nehledáš spinner?
https://gist.github.com/duskohu/7591174
Editoval petr.jirous (9. 11. 2014 22:39)
- Oli
- Člen | 1215
U akcí, které trvají dlouho a nechci aby je formulář odeslal znovu
navěsím na akci submit
schování submit buttonu + nějakej
spinner. Po zpracování překreslím/redirectuju + flash, že je všechno
v pořádku. S tím by neměl být problém…
Ale i ten spinner by mohl stačit. Pokud by jsi mu nastavil něco jako měli na
czc.cz (celá obrazovka se „potáhne“ průhledným bílím pozadím), tak by
pak nemuselo jít znovu kliknout na submit.
- Matey
- Člen | 142
ďakujem za odpovede, nakoniec som sa odpichol od https://gist.github.com/duskohu/7591174 .. predtým som nevedel ako to správne napísať, takže mi vzniklo mi niečo takéto jednoduché:
$.nette.ext('disableSubmit', {
start: function () {
var el = $('input[type="submit"]');
el.attr("disabled", true);
el.css({"background-color": "white", "color": "green"});
el.val( " Odosiela sa..." );
},
complete: function () {
var el = $('input[type="submit"]');
el.attr("disabled", false);
el.removeAttr('style');
el.val( "Odoslať" );
}
});