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
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
- David Kregl
- Člen | 52
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
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;
})