| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Фиксация редактирования элемента формы. |
| Автор: culver 4.5.2016, 11:03 |
| Здравствуйте. Есть большая форма, точнее (от формы я отказался) большое количество инпутов и селектов на странице. На их событие "change" я повесил функцию отправки данных на сервер через ajax. Но это событие возникает только при утрате фокуса элементом и не возникает при закрытии окна браузера или всего браузера. Подскажите, пожалуйста, как мне отловить отредактированные данные при закрытии окна? |
| Автор: ksnk 4.5.2016, 12:19 |
| При закрытии окна браузера срабатывает событие onbeforeunload. Если есть несохраненные данные - нужно отослать их на сервер и тем временем выдать сообщение пользователю "Есть несохраненные данные. Сохранить?" или просто "подожди пару сек...". Пока юзер тормозит, глядя на всплывший алерт - сохранения улетят на сервер... Вообще - можно сохранять изменения в режиме "черновик" - без валидации полей. Все измененные поля тупо сливать в сессию. Для этого вешать таймаут на onkeyup, onchange, onclick и так далее. По таймауту собирать измененные поля и отсылать на сервер. При открытии этой же формы - восстанавливать поля из сессии и по нажатии на "сохранить" - валидировать и сохранять куда надо. Можно в качестве "черновика" использовать локальное хранилище (localstorage). |
| Автор: culver 4.5.2016, 14:33 |
| А можно ли при обработке события onbeforeunload узнать на каком элементе был фокус до закрытия, что-бы сохранить его данные? При вставке текста из буфера мышкой будет ли вызываться onclick? |
| Автор: ksnk 4.5.2016, 15:49 |
| В методе onload пробежаться и сохранить все значения всех контролов в отдельном атрибуте этого контрола, или в data этого элемента. Когда нужно сбросить на сервер изменения - опять бежим по всем контролам и сохраняем только те, которые изменились. Потеря фокуса элементом - событие onblur. При вставке значения копипастом - сработает событие onchange |
| Автор: hardddrugs 4.5.2016, 23:34 |
Модератор: Сообщение скрыто. |