Nefunkční tinyMce po ajaxovém reloadu formuláře
- trta911
- Člen | 35
Ahoj, mám manuálně vykreslovaný formulář a v něm select. Na selectu mám navěšený ajax onchange a tím ve formuláři měním hodnoty na základě toho selectu. vše funguje parádně kromě textarea s tinymce. Po ajaxovém redrawcontrol (snippetem je obalený celý form) se prostě tinymce ztratí a zůstane tam pouze čistá textarea.
Zkoušel jsem dávat init pro tinymce pod $.nette.ext({}) ale to taky nepomohlo.
Jak prosím donutím tinymce aby se znovu načetlo po tom ajaxu?
Editoval trta911 (3. 10. 2018 19:33)
- trta911
- Člen | 35
Ahoj, díky – nakonec jsem to vyřešil následujícím způsobem:
inicializaci samotného tinymce jsem obalil do funkce např. NetteTinyMCE();
(inicializaci mám totiž v úplně jiném souboru než zbytek js věcí)
Dále, aby se mi editor zobrazoval bez ajaxu jsem pod nette ajax init přidal i tuto funkci a jede to:
$(function () {
$.nette.init();
NetteTinyMCE();
});
a dále – ještě před provedením ajax. požadavku je třeba přenést data z editoru do textarea jinak se text z tinymce ztratí a to pomocí tinyMCE.triggerSave(); takto:
$(document).on('change','#frm-campaignForm-pivo_id', function(){
tinyMCE.triggerSave();
$.nette.ajax({
url : {link jesteJednoPivo!},
type : 'GET',
data: {formdata: $('form').serialize()},
error: function(){alert("Theres an error with AJAX.");}
});
});
a pak, aby bylo možno tinymce znovu inicializovat je třeba tu instanci zničit a následně pomocí té funkce do které jsem obalil init tinymce znovu inicializovat → asi takto:
$.nette.ext({
success: function () {
tinymce.remove();
NetteTinyMCE();
}
});
Tak snad to někomu dalšímu pomůže a že jsem to napsal alespoň trochu srozumitelně. Chápu, že to je asi kostrbaté řešení ale nic lepšího mě nenapadlo…je to ale funkční