Ajax form – naznačenie odosielania

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

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

Matey
Člen | 142
+
0
-

nevie mi s tým niekto poradiť? prvý mail ktorý bol odoslaný, prišiel hneď 2×.. nerád by som z toho procesu vyhodil ajax, ale ak to bude nutné tak pôjde preč, ďakujem

Šaman
Člen | 2659
+
0
-

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
+
0
-

ď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
+
0
-

nehledáš spinner?
https://gist.github.com/duskohu/7591174

Editoval petr.jirous (9. 11. 2014 22:39)

Šaman
Člen | 2659
+
0
-

Tak při zpracování nejprve formulář vymažeš, vyhodíš flashmessage a celé překreslíš, pak nebude možné odeslat ho znovu, nevíc bude mít uživatel zpětnou vazbu. Ale 3s odesílání mailu se mi zdá moc, s tím jsem se zatím nesetkal.

Oli
Člen | 1215
+
+1
-

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
+
0
-

ď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ť" );
	}
});