запоминание введенных в форму данных
Всем привет
к примеру у меня есть форма <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 строчки, но сроки горят. штудирование документации особых плодов не принесло. Хелп, камрады ( Буду признателен за любой совет. |
kayuga,
Ройте в сторону formdata и blob |
Цитата:
Цитата:
Делайте что-то вроде: for (var property in filter_stored_values) { var field = myform[property]; // это может быть не Xбраузерно field.value = filter_stored_values[property]; } |
Есть отличная штука dojox/mvc/getStateful. Это модель, в ней можно хранить данные связанные с некоторыми виджетами. Связка осуществляется с помощью модуля dojox/mvc/at. После того как элемент формы будет терять фокус данные этого элемента будут автоматически сохранятся в соответствующее свойство модели. Так же, когда вы в первый раз откроете форму - туда сразу будут подставлены данные из модели. Реальное использование, на первый взгляд, может показаться не простым, но это очень мощный и удобный инструмент.
|
burashka, Спс за совет, но так переписывать половину придется. Мб посоветуете что попроще?
|
kayuga,
Проще цикл по всем тегам формы, при наличии value - вписывать value явно в форму, эту форму сохранить к примеру - на jQuery - это пять-шесть строк,(Думаю на dojo - не больше) |
Цитата:
|
danik.js,
Такое ощущение, что провоцируешь постоянно, В сравнении: - коли на jQuery 5-6 строк, думаю на dojo - не больше! |
Вряд ли от JQuery в предлагаемом решении требуется что-то больше чем селекторы. Так что он тут не нужен. Используйте dojo/query.
если правильно понял идею Deff: 1) с помощью dojo/query выбираете все элементы формы. 2) у полученного объекта есть метод forEach, который легко позволит их все перебрать. 3) для каждого элемента смотрите есть ли для него запомненное value и если надо подставляете. похоже на Dojo даже в одну строку уложить можно) но это костыль. ручная работа с DOM элементами виджетов - это прямая дорога в бесформенное месиво вместо фронт-энда. |
Цитата:
Цитата:
HTML же формы - чисто строка, Можно конечно искать объектную библу под LocalStorage, но оно всегда кастрированное, приватные свойства вряд ли удастся сохранить |
Цитата:
Так jquery-исты тут не помогут (как и я) Цитата:
|
в LocalStorage можно хранить JSON. сделали parse получили обычный JS object, который скармливается конструктору модели - вуаля модель готова. при уходя со страницы модельку превратили в JSON и сохранили обратно в LS.
но про костыль я сказал по другой причине. Если работаешь не прямо с DOM-ом, а с объектами фреймворка, то надо и продолжать с ними работать через публичный API, а не лезть с ногами в DOM элементы, которые создал фреймворк. |
Цитата:
Не стоит зарабатывать рейтинг, обсирая чужие мнения и решения, - аукнуться может, - непогрешимых нет, о присутствующих в том числе. |
Цитата:
|
запоминание введенных в форму данных
за инфо.Форму я создал,а вот как правильно и с помощью чего её обрабатывать пока не догоняю.
|
Часовой пояс GMT +3, время: 15:51. |