Javascript-форум (https://javascript.ru/forum/)
-   Dojo toolkit (https://javascript.ru/forum/dojotoolkit/)
-   -   запоминание введенных в форму данных (https://javascript.ru/forum/dojotoolkit/36131-zapominanie-vvedennykh-v-formu-dannykh.html)

kayuga 04.03.2013 22:40

запоминание введенных в форму данных
 
Всем привет
к примеру у меня есть форма
<div dojoType="dijit.form.Form" id="filterGoodFlow" jsId="filterGoodFlow">
    <input type="text" name="article" id="filterGoodFlow_article" dojoType="dijit.form.ValidationTextBox" value="" />
</div>


инпутов естественно больше и типы разные. мне нужно запоминать введенные значения и при последующем открытии окна заполнять форму прошлыми значениями. запоминаю так, тут всё ок, работает.
app.storage.put('filterGoodFlow_obj', filterGoodFlow.getValues(), function(){}, 'filterGoodFlow');

Как мне потом заполнить ими форму ? Тут получаю значения из хранилища.
var filter_stored_values = app.storage.get('filterGoodFlow_obj', 'filterGoodFlow');


Единственный способ заполнения, который приходит в голову - на каждое поле формы:
dojo.byId('filterGoodFlow_article').value = filter_stored_values.article;
filterGoodFlow.value.article =  filter_stored_values.article;

и так вручную по каждому полю. И то не факт что заработает. А форм таких и полей в них очень много, хотелось бы что-то хотя бы более-менее универсальное. Мб я туплю и это делается в 2 строчки, но сроки горят. штудирование документации особых плодов не принесло. Хелп, камрады ( Буду признателен за любой совет.

Deff 05.03.2013 00:33

kayuga,
Ройте в сторону formdata и blob

danik.js 05.03.2013 05:18

Цитата:

Сообщение от Deff
Ройте в сторону formdata и blob

Как это тут поможет? formData позволит разом заполнить все поля?
Цитата:

Сообщение от kayuga
Мб я туплю и это делается в 2 строчки, но сроки горят

Вы ищете реализацию функции «сделатьВсёЗа*бись()» ?

Делайте что-то вроде:
for (var property in filter_stored_values) {
    var field = myform[property]; // это может быть не Xбраузерно
    field.value = filter_stored_values[property];
}

burashka 05.03.2013 13:20

Есть отличная штука dojox/mvc/getStateful. Это модель, в ней можно хранить данные связанные с некоторыми виджетами. Связка осуществляется с помощью модуля dojox/mvc/at. После того как элемент формы будет терять фокус данные этого элемента будут автоматически сохранятся в соответствующее свойство модели. Так же, когда вы в первый раз откроете форму - туда сразу будут подставлены данные из модели. Реальное использование, на первый взгляд, может показаться не простым, но это очень мощный и удобный инструмент.

kayuga 05.03.2013 18:34

burashka, Спс за совет, но так переписывать половину придется. Мб посоветуете что попроще?

Deff 05.03.2013 22:52

kayuga,
Проще цикл по всем тегам формы, при наличии value - вписывать value явно в форму, эту форму сохранить
к примеру - на jQuery - это пять-шесть строк,(Думаю на dojo - не больше)

danik.js 06.03.2013 04:26

Цитата:

Сообщение от Deff
- на jQuery пять-шесть строк,

Предлагаешь помимо dojo еще и jQuery подключить?

Deff 06.03.2013 05:56

danik.js,
Такое ощущение, что провоцируешь постоянно,
В сравнении: - коли на jQuery 5-6 строк, думаю на dojo - не больше!

burashka 06.03.2013 13:26

Вряд ли от JQuery в предлагаемом решении требуется что-то больше чем селекторы. Так что он тут не нужен. Используйте dojo/query.

если правильно понял идею Deff:
1) с помощью dojo/query выбираете все элементы формы.
2) у полученного объекта есть метод forEach, который легко позволит их все перебрать.
3) для каждого элемента смотрите есть ли для него запомненное value и если надо подставляете.

похоже на Dojo даже в одну строку уложить можно)

но это костыль. ручная работа с DOM элементами виджетов - это прямая дорога в бесформенное месиво вместо фронт-энда.

Deff 06.03.2013 14:45

Цитата:

Сообщение от burashka
но это костыль. ручная работа с DOM элементами виджетов - это прямая дорога в бесформенное месиво вместо фронт-энда.

Дык А как это
Цитата:

Сообщение от burashka
Так же, когда вы в первый раз откроете форму - туда сразу будут подставлены данные из модели. Реальное использование, на первый взгляд, может показаться не простым, но это очень мощный и удобный инструмент.

А как это, - сохранить на LocalStorage, после перезагрузки компутера - или браузера ? LocalStorage только строки хранит, -
HTML же формы - чисто строка,
Можно конечно искать объектную библу под LocalStorage, но оно всегда кастрированное, приватные свойства вряд ли удастся сохранить


Часовой пояс GMT +3, время: 11:05.