Duplicitní dialog netteFormsModal s ajaxem (Naja.js)
- d@rkWolf
- Člen | 167
Zdravím, narazil jsem na zvláštní problém, po inicializaci Naja.js se vkládá do stránky 2× modal dialog od NetteForms.js validace. U formuláře mám nastavenou třídu „ajax“. Netušíte, čím to může být? Ptal jsem sei na Naja diskuzích, ale zatím nic, jsem trochu zoufalý :-(
Mám aktuální NetteForms, aktuální verzi JS scriptu, aktuální Naja 3.cosi. Upgradoval jsem z Naja 1.8.x kvůli snaze vyřešit potíže s TreeView v Ublaboo/Contributte Datagridu. Nepoužívám Webpack ani nic podobného, všechny JS soubory mi v pořadí Naja->NetteForms->Front.js spojí(a na produkci minifikuje) Webloader (upgradovaná verze od Gappa podporující aktuální Nette a PHP 8+). Je to úplně obyčejný kontaktní formulář, 3 text pole, textarea a odeslat, ještě se to teda renderuje přes rozšíření Contributte/Forms-bootstrap(verze by měla být kompatibilní s aktuální NetteForms dle composeru) a řeší to akorát formát html a stylování do formátu Bootstrapu-na validační dialog to nijak nešahá pokud vím.
V front.js mám jen toto – jen inicializace Naja, „afterUpdate“, kterým jsem nahradil „load“ z Naja 1.8.x dle migračního návodu (nic z dalšího kódu nemá na situaci vliv, stačí nechat první 3 řádky a modal od formu se otevře 2× přes sebe(pokud ale dám naja.inicialize pryč, ajax přestane fungovat), tohle je pro front-end, v adminu, který má zajaxované celé stránky mám kódu víc, ale výsledek je stejný:
"use strict";
document.addEventListener('DOMContentLoaded', () => {
naja.initialize();
});
// Naja: run after ajax update
naja.snippetHandler.addEventListener('afterUpdate', (event) => {
// todo (re)initialize stuff
// Activate scrollspy to add active class to navbar items on scroll
$('body').scrollspy({
target: '#mainNav',
offset: 56,
});
});
// Naja: handle snippets on 4xx errors
naja.addEventListener('error', ({xhr, response}) => {
if ((xhr.status >= 400 && xhr.status <= 499) && response.snippets) {
naja.snippetHandler.updateSnippets(response.snippets);
}
});
...nějaké jQuery scripty(nemají vliv)
Zkoušel jsem i variantu jen:
"use strict";
naja.initialize();
Výsledek je stejný, 2× vložený modal(dialog – nebýval to dříve Alert?).
Nejsem si moc jistý, jak to má správně být, našel jsem obě varianty, s js moc kamarád nejsem, obvykle stačilo $(document).ready(function() { } a do toho skopírovaný kód z dokumentace nějakého carouselu či jiného externího scriptu.
Editoval d@rkWolf (22. 8. 20:59)