nette.ajax a submit handler
- monty
- Člen | 66
Ahoj.
Ve formuláři používám TinyMCE editor.
Před odesláním formuláře tudíž musím zavolat metodu save() na každém
editoru, aby se mi aktualizoval obsah textarea.
Na formulář si tedy nalepím submit event handler a metodu zavolám.
Všechno OK.
Pokud ale chci formulář zpracovat ajaxem, handler neproběhne.
Někde jsem našel, že pokud chci řešit vlastní onsubmit logiku ajax formuláře, musím ho odeslat manuálně…
$("form").netteAjax();
Takže mě napadlo, že abych mohl dál využívat .ajax selector, udělám tohle…
netteAjax = $.nette.ext("init");
netteAjax.buttonSelector = null;
netteAjax.formSelector = null;
$.nette.init();
$(document).on("submit", "form", function(e) {
e.preventDefault();
tinymceSave();
$(this).netteAjax(e);
});
Neprobíhá teď ale správně validace, protože ve formuláři mám víc submit tlačítek s různě nastaveným validationScope.
Poradí mi prosím někdo, jak by se to dalo řešit?
Díky
Petr
- rkor
- Člen | 62
Co využít extension pro nette ajax? https://github.com/…tte.ajax.js/#…
$.nette.ext('save', {
before: function() {
tinymceSave();
}
});
Editoval rkor (13. 4. 2018 20:48)
- monty
- Člen | 66
rkor napsal(a):
Co využít extension pro nette ajax? https://github.com/…tte.ajax.js/#…
$.nette.ext('save', { before: function() { tinymceSave(); } });
Ahoj.
Kdepak, to byla první věc, co jsem zkoušel.
Překvapilo mě, že to nefunguje, ale jakákoliv změna ve formuláři, kterou
v before provedu, se v uložených hodnotách neprojeví.
Myslím, že se problém týká netteForms.
Zkoušel jsem tohle a se standardním inputem, abych se ujistil, že ta tiny
funkce není nějak opožděná.
Proběhne to sice ještě před veškerým nette.ajax, ale hodnota se změněná
neuloží.
Nette.validateForm = function(form) {
alert(1);
$("#frm-materialForm-title").val("xxx");
};
- monty
- Člen | 66
rkor napsal(a):
Aha, to je blbý. A co třeba onblur?
<textarea onblur="this.tinymceSave()"></textarea>
Já mám tu save funkci teď nalapenou na keyup eventu tinyMCE, ale pokud
budu chtít někdy keyup handler upravit, musím pamatovat i na ten save a je
mi jasný, že na to časem zapomenu.
Proto bych si to chtěl definovat na tom submit, abych na to nemusel v budoucnu
myslet.
Nevíš, jestli by se to dalo udělat někde na úrovni netteForms?