| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Форма с модальным окном |
| Автор: KonstRuctor 26.7.2011, 13:04 | ||||||||||
| Привет! Строю алгоритм изменения-удаления данных. Удобно делать небольшие формы в модальном окне, чтобы не создавать кучу отдельных файлов для редактирования каждого элемента сайта. Опишу сперва мой алгоритм, потом задам пару вопросов, что у меня не выходит. Итак, нам потребуется jquery и плагин thickbox для создания модальных окон. Верстка основной страницы modal.php такая:
Далее верстка формы, которая появляется в окне, файл ajax.php
Далее скрипт валидации и отправки формы valid.js
И скрипт, который отвечает за проверку и, в дальнейшем, за вставку данных в базу valid.php
И совсем коротенький скриптик, который убирает сообщение со страницы верстки timeout.js
Вопросы, их три. 1) Как использовать скрипт valid.js универсально? Сейчас в нем жестко прописан редирект на определенную страницу. А если я его буду вызывать с разных мест сайта, мне придется плодить данный скрипт для каждой страницы! только чтобы менять место редиректа. 2) Всплывающее окно, которое выскакивает на странице верстки после удачного редактирования данных тут же красиво убирается. Но если нажать F5, оно выскакивает снова. Этот момент не особо страшный, так как это админка, и админ не дурак жать F5, но с точки зрения красоты работы это ведь есть плохо? 3) Как в этом самом окне показывать разные надписи согласно ситуации? На одной странице можно, к примеру, и удалять и редактировать данные. Чтобы вместо "Все нормально" говорить "Удалено успешно". Сейчас надпись жестко приписана в теле страницы. Спасибо! |
| Автор: KonstRuctor 26.7.2011, 15:32 |
| Я учусь, поэтому и задал вопрос... Признаюсь, в ответе ничего не понял... Я понимаю, что нужно подумать над тем, чтобы по кнопке F5 данные не отправлялись вновь. В моем алгоритме по кнопке F5 происходит обновление страницы с параметрами GET: modal.php?message=ok И раз пришло это самое "ok", снова показывается div и так по кругу до посинения. Расскажите пожалуйста про функцию и передачу параметров. У меня есть функция success: function(msg)... которая вызывается при удачном выполнении ajax. То есть мне нужно внутри этой функции вызвать еще одну функцию.... и в ней вызвать редирект? Не понимаю. |
| Автор: CruorVult 26.7.2011, 16:11 | ||||
Нужно делать не через анонимную ф-ю:
|
| Автор: KonstRuctor 27.7.2011, 12:13 | ||
| Хм. Что-то не так. Не работает. Что я делал: 1) исправил свой скрипт valid.js 2) добавил новый скрипт с одной строчкой
3. Подключил оба скрипта. Не работает валидация, не работает перенаправление. |
| Автор: CruorVult 27.7.2011, 14:26 | ||
скобку забыл + учитесь ЖС отлаживать ctrl+shift+O |
| Автор: KonstRuctor 27.7.2011, 14:29 | ||||
Так инструментами еще пользоваться надо уметь Сейчас домучиваю, пока не выходит ничего Добавлено через 13 минут и 46 секунд Получилось решить мой вопрос (1) -- универсальность скрипта valid.js Решение такое: 1) модифицируем скрипт valid.js
2) модифицируем форму, которая появляется в модальном окне (ajax.php)
Таким образом при успешном заполнении формы (ошибок нет) программа берет имя файла для перенаправления, в данном случае -- modal. Что осталось не сделанным? В случае использования пагинатора не получится передать номер страницы, на которую надо перенаправить админа. Допустим, админ редактирует новости и оказался на 3 странице в перечне новостей. Жмет кнопку "edit", редактирует заголовок новости в модальном окне. В случае успеха он должен попасть куда-то сюда: news.php?page=3 а попадет опять в начало и вынужден будет (проклиная программиста) листать пагинатором |
| Автор: KonstRuctor 27.7.2011, 20:44 | ||||
| Проблему с нажатием кнопки F5 попробовал решить с помощью cookies. Вот мое решение: 1) Правим файл valid.php. Если валидация прошла успешно, ставим куку:
2) В файле modal.php, в самом начале, до любого вывода добавляем:
Таким образом обходится проблема нажатия кнопки F5, никакие параметры не передаются по GET, что и требовалось сделать. Остается нерешенной проблема с пагинатором и передачей сложного пути редиректа. |