javascript jquery autosave

javascript - ¿Se guardan automáticamente los cuadros de entrada en la base de datos durante la pausa en la escritura?



jquery autosave (3)

Debounce el cambio de área de texto.

Demo: jsFiddle

Ponga su llamada ajax en la función saveToDB() . Estos nombres de eventos ( ''input propertychange change'' ) se activarán en cualquier cambio de elemento de formulario, como botones de opción, entradas, etc.

var timeoutId; $(''#the-textarea'').on(''input propertychange change'', function() { console.log(''Textarea Change''); clearTimeout(timeoutId); timeoutId = setTimeout(function() { // Runs 1 second (1000 ms) after the last change saveToDB(); }, 1000); }); function saveToDB() { console.log(''Saving to the db''); }

Aquí hay una demostración completa que muestra cómo deshacer un formulario completo y usar ajax para enviar los datos y luego devolver el estado (Guardando, Guardado, etc.).

Demo de forma completa y ajax: jsFiddle

Tengo un formulario grande en mi sitio web que deseo poder guardar automáticamente en una base de datos cuando el usuario lo está llenando. Casi idéntico a cómo funciona Google Drive al escribir un documento.

Intento no tener una función que se ejecute cada X segundos, sino una función que se ejecuta cuando el usuario ha interrumpido la escritura. Por lo tanto, si el usuario no ha escrito en 1 hora pero aún está en la página, no sigue presionando las solicitudes de guardado.

Esto es todo lo que tengo hasta ahora, que es un envío de formulario javascript básico.

$("#page1Form").submit(function(event){ event.preventDefault(); $changesSaved.text("Saving..."); var url = "/backend/forms/page1-POST.php"; $.ajax({ type: "POST", url: url, data: $("#page1Form").serialize(), success: function(data) { $changesSaved.text(data); } }); return false; });


Pruebe Sisyphus.js https://github.com/simsalabim/sisyphus . Persiste los datos del formulario en el almacenamiento local del navegador y es robusto contra el cierre de pestañas, bloqueos del navegador, etc.


Sé que esta pregunta es antigua, pero me gustaría incluir un código que me guste más. Lo encontré aquí: http://codetunnel.io/how-to-implement-autosave-in-your-web-app/

Aquí está el código:

var $status = $(''#status''), $commentBox = $(''#commentBox''), timeoutId; $commentBox.keypress(function () { $status.attr(''class'', ''pending'').text(''changes pending''); // If a timer was already started, clear it. if (timeoutId) clearTimeout(timeoutId); // Set timer that will save comment when it fires. timeoutId = setTimeout(function () { // Make ajax call to save data. $status.attr(''class'', ''saved'').text(''changes saved''); }, 750); });

Se guarda después de que el usuario deja de escribir durante más de 750 milisegundos.

También tiene un estado que le permite al usuario saber que los cambios se han guardado o no.