Automatické odeslání formuláře v nastavených časových intervalech

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
patrik82
Člen | 2
+
0
-

Ahoj, prosím o pomoc:

Mám jednoduchou aplikaci kam si uživatelé píšou volné texty. Všechno funguje až na to, že občas si svoje dílo zapomenou uložit a buď zavřou prohlížeč nebo jim vyexpiruje přihlášení. Chtěl bych, aby na stránce s formulářem běžela nějaká časomíra a jednou za nastavený počet minut se zavolala metoda pro uložení do tabulky a přepsal se nějaký maličký snippet „uloženo v H:i“.

Bohužel vůbec nevím, jak to udělat. Použít něco s jQuery? Co? A jak z toho zavolat metodu public function save($values) a předat jí hodnoty z formuláře?

Můžete mě nasměrovat? Díky.

h4kuna
Backer | 740
+
0
-

Koukni na setInterval a pomocí ajaxu odešli form ve zvoleném intervalu.

Tohle s Nette nesouvisí.

mkoubik
Člen | 728
+
0
-

Případně pokud stačí aby se to ukládalo na klientu, tak sisyphus.

patrik82
Člen | 2
+
0
-

Díky.

Pomocí nette.ajax.js teď odesílám formulář AJAXem, což je snadné – stačí dát k ručnímu vykreslování

{form textForm, class => ajax}

A k tomu pravidelně pomocí jQuery „klikám“ na tlačítko SAVE, které má ID #frmtextForm-save.

<p id="autosave"></p>
<script type="text/javascript">
    $(document).ready(function(){
        var int=self.setInterval(function(){ autosave() },300000);
        function autosave()
        {
          var d=new Date();
          var t=d.toLocaleTimeString();
          $("#frmtextForm-save").trigger('click'); // CLICK
          $("#autosave").text('Automaticky uloženo: ' +t);
        }
    });
</script>

A oblast formuláře neobnovuju. Nic lepšího mě zatím nenapadlo a funguje to.

Ale co kdybych chtěl místo simulace klikání zavolat přímo metodu (třeba i jinou, než je na tlačítku), jak jsem původně chtěl?