Manuální odeslání formu AJAXem

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

Zdravím, používám nette.ajax.js a potřeboval bych „manuánlě“ odeslat form. Potíž je v tom, že potřebuji nejdřív zkotrolovat svoje variables a pak až ho odeslat popřípadě ho neodesílat neodesílat.

if (foo == true){
foo = false;
ajax.send();
}
ajax.complete(function(){
foo = true;
})

prostě ochrana proti duplicitnímu odeslání. Takové manuální odeslání nikde zmíněno není.

Díky

zool
Člen | 144
+
0
-

Ahoj taky to zháním přišel jsi na to??

David Kregl
Člen | 52
+
0
-

Zdárek,
vždyť ty proměnné si můžeš zkontrolovat v metodě onValidate(). Takže máš zajaxovaný form, v jeho továrníčce něco jako: $this->onValidate[] = $this->checkVariables; a je to.

Editoval David Kregl (4. 8. 2015 9:27)

Lukeluha
Člen | 130
+
0
-

Ahoj,

nette.ajax.js řeší i validaci. Tady příkládám svůj kód, jak neodeslat 2× stejný formulář :)

$(document).on('click', '.my-ajax', function(e){

	var request = $.nette.ajax({}, this, e);
		//.success(function(){
		//var element = $(e.target);
	//});

	if (request.readyState) {
		if (!$(this).data('no-change-text')) {
			if ($(this).hasClass('btn')) {
				$(this).addClass('disabled');
				var isSubmit = $(this).is('input[type=submit]') || $(this).is('button[type=submit]');

				if (isSubmit) {
					$(this).val("Počkejte...");
				} else {
					$(this).text("Počkejte...");
				}
			}
		}
	}

	e.preventDefault();
	return false;
});

$(document).on('click', '.disabled', function(e) {
	e.preventDefault();
	return false;
})