2013-08-28 2 views
1

Я знаю, что это сложная задача, но есть ли хороший способ сохранить ввод формы, когда пользователь переходит на другую страницу без отправки, поэтому, когда они вернутся, им не придется повторно вводить информацию?Любой хороший способ сохранить неподписанную форму?

Я использую Rails 4, Simple Form и jQuery, но я открыт для любого решения, которое не является уродливым взломом.

ответ

6

Функция сериализации jQuery может быть вашим другом здесь. Вы можете сериализоваться на выходе и сохранить его в DB или localStorage, а затем сделать обратный, когда они вернутся на страницу.

http://api.jquery.com/serialize/

В качестве альтернативы можно цикл через элементы и хранить их в массиве/объект, который затем вы также хранить в LocalStorage и о повторном входе вы повторно заполнить значения формы соответственно.

1

Если вы не хотите каких-либо внешних зависимостей, вы можете просто сделать кнопку возврата (или любую другую страницу), которая фактически отправляет форму. Затем просто введите оператор if, основанный на значении params[:submit], и используйте хеш params, чтобы заполнить некоторые скрытые поля на новой странице.

Когда вы нажимаете на исходную форму, скрытые поля передаются и заполняют входы.

3

Все это отличные идеи, но я нашел идеальное решение для меня: Garlic.js.

Для тех, кто с подобной проблемой в будущем, все, что вам нужно сделать с garlicjs это включить библиотеку и добавьте следующие строки в виде тега:

data-persist="garlic" 

Библиотека в значительной степени заботится обо всем остальном оттуда точно так, как вы ожидали бы. Если вам не нравятся некоторые из его пресетов, это выглядит довольно хорошо документированным, и почти каждый признак кажется отключенным.

Одна из проблем заключается в том, что это решение только для HTML5, но это хорошо для моих целей. Если вам нужно что-то более совместимое с крестом, решение Роба выглядит неплохо.

+1

Да, это выглядит как хороший. Работает по одному и тому же принципу localStorage, но отнимает некоторые из них! –

Смежные вопросы