Změna submit buttonu po odeslání v nette.ajax.js

Higr
Člen | 16
+
0
-

Potřeboval bych přijít na to, jak změnit vzhled submit buttonu při zpracovávání formuláře přes nette.ajax.js, na nějaký loading style. Až ajax doběhne, tak by se tlačítko změnilo zase do původní hodnoty. V javascriptu jsem zcela začátečník, věděl by mi někdo poradit s touhle fíčurou?

dms
Člen | 94
+
0
-

Ahoj, napis si vlastni extension pro nette.ajax.js (je to v dokumentaci) a na udalost pred odeslanim ajax requestu nastavis inputu tridu ktera bude mit loading kolecko a po odeslani tu tridu odeberes.

Kamil Valenta
Člen | 822
+
+1
-

Jen pozor, „loading style“ je potřeba také odebrat v případě, že form bude nevalidní a zobrazí nějakou chybu. Aby bylo možné opravený form zase odeslat :)

Higr
Člen | 16
+
0
-

máte nějakou představu jak by to asi mohlo vypadat? v js vůbec nedělám a ten kód mi přijde jak španělská vesnice

ic
Člen | 430
+
0
-

@Higr

Bez znalosti JS to nebude jednoduché, jo a taky bez znalosti jQuery.

napřed bych si identifikoval tlačítko (tlačítka) na které chci funkci navěsit, například pomocí přidání class ‚efekt‘ po načtení celého dokumentu pak na ně script zavěsí js efekt něčím, jako toto:

[ ...document.querySelectorAll( '.efekt' ) ].forEach( ( /** @type {HTMLElement} */ item ) =>
{
  item.addEventListener( 'click', (event) =>
  {
    event.target.classList.add( 'kliknuto' );
  }, false )
} );

a po načtení nette scriptů se dá dokončení ajaxového požadavku detekovat pomocí něčeho jako :

$.nette.ext( "ajaxRedirect", {
  complete: function ( payload, status, nette )
  {
    // … kód zde … kliknuté tlačítko bude v nette.nette.el, takže třeba nette.nette.el.classList.remove('kliknuto');
  }
} );

a + různé chybové stavy pro případ, že kliknuto sice je, ale formulář je nevadlidní a tak se neodešle, nebo se odešle a ze serveru vrátí chyba, …

Editoval ic (19. 7. 2019 13:15)

Higr
Člen | 16
+
+1
-

díky za nevedení správným směrem, zkusím tam něco vyšpekulovat :D