Статьи / Автосохранение данных, введенных в поля формы
Я думаю, что многие из нас сталкивались с такой ситуацией, когда вы заполняете длинную форму и когда форма почти заполнена, браузер прекращает свою работы или Вы случайно закрываете вкладку. Если Вы не сталкивались с такими ситуациями, то Вы просто счастливчик, но в большинстве случаев никто не застрахован от такого рода неприятностей.
Представьте реакцию пользователя, которому пришлось заполнять длинную форму, и в итоге все данные утеряны. В такой ситуации стоит задуматься об автосохранении значений полей в форме.
Наиболее распространенным вариантом решения является метод редактирования длинного комментария в локальном файле, который периодически сохраняется, и копирование всего блока информации после завершения работы. Некоторые формы поддерживают сохранение черновика по нажатию специальной кнопки. Но далеко не все формы имеют такую опцию и такое решение не вполне удобно. Наилучшим вариантом обладает Gmail с опцией автосохранения черновика: все, что печатается в форме, автоматически сохраняется без нажатия каких-либо кнопок.
Sisyphus.js
Конечно же, можно использовать реализацию автосохранения по типа gmail, но это очень трудозатратно и не совсем логично. Решение данной задачи должно быть простым и лёгким в использовании.
В результате получился непритязательный скрипт, который сохраняет данные формы в локальном хранилище браузера пользователя и восстанавливает их, когда страница открывается повторно или в новой закладке. Данные удаляются из локального хранилища, когда пользователь отправляет или сбрасывает форму.
Как использовать
Использовать Sisyphus.js очень просто. Нужно выбрать форму, которая будет работать с автосохранением:
$('#form1, #form2').sisyphus();
Или защитить все формы на странице:
$('form').sisyphus();
Доступны следующие опции:
{
customKeyPrefix: '',
timeout: 0,
onSave: function() {},
onRestore: function() {},
onRelease: function() {}
}
Вот для чего они предназначены:
customKeyPrefix Дополнительный ключ в локальном хранилище, который используется для хранения значений полей формы..
timeout Интервал (в секундах) между сохранения данных. Если установлено значение 0, то сохранение будет выполняться после обновления любого поля.
onSave Функция, которая вызывается при сохранении данных в локальном хранилище.
onRestore Функция, которая вызывается при восстановлении данных из хранилища. В отличие от функции onSaveCallback, она применяется ко всей форме, а не к отдельному полю.
onRelease Функция, которая вызывается, когда локальное хранилище очищается от данных.
Даже если Sisyphus.js использовался для формы, вы можете применять его для другой формы. В данном случае скрипт не будет создавать дополнительного экземпляра и будет использовать те же опции:
// Сохраняем данные формы form1 каждые 5 секунд
$('#form1').sisyphus( {timeout: 5 } );
// Если нужно сохранять данные второй формы
$('#form2').sisyphus( {timeout: 10} )
// Теперь данные будут сохраняться в обеих формах каждые 10 секунд
Значения опций можно изменять в ходе работы:
var sisyphus = $('#form1').sisyphus();
// Если вы решите, что сохранять данные по таймеру лучше
$.sisyphus().setOptions( {timeout: 15} );
// Или
sisyphus.setOptions( {timeout: 15} );
Что нужно для работы плагина
Требования: Sisyphus.js требует для работы jQuery версии 1.2 или выше.
Поддержка браузерами:
Chrome 4+,
Firefox 3.5+,
Opera 10.5+,
Safari 4+,
IE 8+
Скачать плагин можно .
Комментарии