Nette.ajax.js – zmena údajov vo formulári

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

Používam nette.ajax na odosielanie formulárov a potrebujem ich pred odoslaním upraviť. Keď to ale spravím cez ext v before evente, tak zmeny formulára sa neprejavia v odoslaných dátach, resp. odošlú sa staré neupravené dáta.

Kód:

<script type="text/javascript">
$.nette.ext('unique_emails', {
	before: function(xhr, settings) {
		var unique_emails = get_unique_emails();

		$('#form_element').val(unique_emails);
	}
});
</script>

Viete mi poradiť spôsob ako upraviť dáta vo formulári a potom ich aj cez ajax odoslať?

Vopred ďakujem

CZechBoY
Člen | 3608
+
0
-

Nemůžeš prostě použít událost formuláře onsubmit?

greno
Člen | 10
+
0
-

Projekt, v ktorom to využívam je rozsiahly a nechcem miešať 2 rôzne veci na jednu a tú istú vec. Navyše, predpokladám, že nette.ajax mi rieši aj tie ostatné veci okolo toho (napr. snippety), ktoré by som takto musel riešiť ja.

Editoval greno (2. 5. 2016 12:54)

CZechBoY
Člen | 3608
+
0
-

Ty chceš jen změnit nějaký hodnoty před odesláním, ne? K tomu bych řekl, že slouží onsubmit.

Tanadche
Člen | 11
+
+2
-

V tomhle případě bych nešel cestou nette.ajax.js extension (asi nechceš, aby se ti kód prováděl při všech ajaxových požadavcích, ale pouze před odesláním jednoho konkrétního formuláře), ale napsal bych si vlastní handler

$('#my-form').on('submit', function(evt) {
    $('#form_element').val(get_unique_emails());

    $.nette.ajax({}, this, evt);
});
greno
Člen | 10
+
0
-

Aha, takto si to myslel, ja som myslel že myslíš vyhodiť všetko a urobiť si to ručne. Vyzerá to, že on submit sa púšťa skôr ako nette.ajax, díky :)

greno
Člen | 10
+
0
-

Tanadche napsal(a):

V tomhle případě bych nešel cestou nette.ajax.js extension (asi nechceš, aby se ti kód prováděl při všech ajaxových požadavcích, ale pouze před odesláním jednoho konkrétního formuláře), ale napsal bych si vlastní handler

$('#my-form').on('submit', function(evt) {
    $('#form_element').val(get_unique_emails());

    $.nette.ajax({}, this, evt);
});

ty si génius. ten onsubmit sa síce spustí skôr ale nič to nemení na fakte, že to posiela blbosti. Toto funguje geniálne.