Nefungující validace po ajax požadavku
- gavec
- Člen | 68
Zdravím,
už se to tady několikrát řešilo, ale z uvedených řešení nejsem moc
chytrý. Lépe řečeno jsem tyto řešení zkoušel ale žádné nepomohlo.
Uvedu tedy problém. Mám formulář, na kterém provádím AJAX operaci.
Zároveň bych však chtěl tento formulář validovat. Ajax operace se
spouští po submitu a pro validaci používám live validaci z doplňků (https://componette.org/search/?…).
Validace funguje jen do té doby než provedu AJAX operaci. Pak místo live
validace funguje údajně validace prohlížeče.
Neměl by někdo nějakou radu, která by mi zaručila funkčnost validace i po provedení AJAX požadavku?
Přikládám ajax soubor, ve kterém řeším ajax formuláře:
$(function () {
$("a.ajax").live("click", function (event) {
event.preventDefault();
$.get(this.href);
});
$("form.ajax").live('submit',function () {
$(this).ajaxSubmit();
return false;
});
$("form.ajax :submit").live('click',function () {
$(this).ajaxSubmit();
return false;
});
});
- redhead
- Člen | 1313
Spíš bych se to pokusil udělat někde na straně klienta a univerzálně (nepřenášet to ze serveru).
Předpokládám, že používáš standardní addon ‚AJAX s jQuery‘. Můžeš upravit funkci updateSnippet(), aby prohledala onen snippet a inicializovala všechny formuláře v něm. Něco na způsob:
<script>
jQuery.nette.updateSnippet = function (id, html) {
var snippet = $("#" + id);
// nejdriv aktualizuj snippet
snippet.html(html);
// pak najdi vsechny formulare ve snippetu a kazdy inicializuj
snippet.find('form').each(function() {
Nette.initForm(this);
});
};
</script>
Kód jsem nezkoušel, ale měl by fungovat.
EDIT: tento kus kódu můžeš includovat do všech stránek a pak všechny formuláře, které se kdy přenesou AJAXem, by měly spouštět live validaci.
Editoval redhead (13. 7. 2012 16:14)