Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фиксация редактирования элемента формы. 
:(
    Опции темы
culver
Дата 4.5.2016, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.10.2012

Репутация: нет
Всего: нет



Здравствуйте.
Есть большая форма, точнее (от формы я отказался) большое количество инпутов и селектов на странице. На их событие "change" я повесил функцию отправки данных на сервер через ajax. Но это событие возникает только при утрате фокуса элементом и не возникает при закрытии окна браузера или всего браузера. Подскажите, пожалуйста, как мне отловить отредактированные данные при закрытии окна? 
PM MAIL   Вверх
ksnk
Дата 4.5.2016, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



При закрытии окна браузера срабатывает событие onbeforeunload. Если есть несохраненные данные - нужно отослать их на сервер и тем временем выдать сообщение пользователю "Есть несохраненные данные. Сохранить?" или просто "подожди пару сек...". Пока юзер тормозит, глядя на всплывший алерт - сохранения улетят на сервер... 

Вообще - можно сохранять изменения в режиме "черновик" - без валидации полей. Все измененные поля тупо сливать в сессию. Для этого вешать таймаут на onkeyup, onchange, onclick и так далее. По таймауту собирать измененные поля и отсылать на сервер. При открытии этой же формы - восстанавливать поля из сессии и по нажатии на "сохранить" - валидировать и сохранять куда надо. Можно в качестве "черновика" использовать локальное хранилище (localstorage).

Это сообщение отредактировал(а) ksnk - 4.5.2016, 12:57


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
culver
Дата 4.5.2016, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.10.2012

Репутация: нет
Всего: нет



А можно ли при обработке события onbeforeunload узнать на каком элементе был фокус до закрытия, что-бы сохранить его данные?
При вставке текста из буфера мышкой будет ли вызываться onclick?
PM MAIL   Вверх
ksnk
Дата 4.5.2016, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



В методе onload пробежаться и сохранить все значения всех контролов в отдельном атрибуте этого контрола, или в data этого элемента.
Когда нужно сбросить на сервер изменения - опять бежим по всем контролам и сохраняем только те, которые изменились.

Потеря фокуса элементом - событие onblur. При вставке значения копипастом - сработает событие onchange


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
hardddrugs
Дата 4.5.2016, 23:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












Модератор: Сообщение скрыто.

  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1074 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.