|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
Всем привет! Есть некая процедура с пошаговым заполнением html-формы. Пусть это будет покупка товара, состоящая из трех шагов: Шаг 1: вводим e-mail Шаг 2: вводим личные данные Шаг 3: подтверждаем данные, введенные на шаге 1-2 После этого данные отправляются на внешний ресурс - в платежную систему. На каждом шаге есть кнопка "Вперед", отправляющая пользователя к следующему шагу. Это, естественно, сильно упрощенный пример. Вопрос идейный: каким способом реализовать навигацию между шагами. Вариант 1. С перезагрузкой страницы. При нажатии кнопки "Вперед" данные отправляются на сервер методом POST, вытаскиваются оттуда, обрабатываются, запоминаются, и отображается форма с новыми полями следующего шага Вариант 2: С ajax-подгрузкой новой формы. Данные также отправляются на сервер, но аяксом, без перезагрузки страницы. И после всех обработок в блок с текущей формой подгружается форма с новыми полями следующего шага. Вариант 3: С с помощью JS. В html выводим 3 div, в каждом из которых - нужный шаг. Второй и третий div делаем display:none. И при нажатии на кнопку "Вперед" текущий div скрываем, следующий - отображаем. Руки тянутся к варианту 3. Что скажете? Можно так делать? Есть какие-то особенности, подводные камни? Понятное дело, все зависит от задач. Но основные условия и требования я рассказал. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2016, 19:15 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
urukhayВсем привет! Есть некая процедура с пошаговым заполнением html-формы. Пусть это будет покупка товара, состоящая из трех шагов: Шаг 1: вводим e-mail Шаг 2: вводим личные данные Шаг 3: подтверждаем данные, введенные на шаге 1-2 После этого данные отправляются на внешний ресурс - в платежную систему. На каждом шаге есть кнопка "Вперед", отправляющая пользователя к следующему шагу. Это, естественно, сильно упрощенный пример. Вопрос идейный: каким способом реализовать навигацию между шагами. Вариант 1. С перезагрузкой страницы. При нажатии кнопки "Вперед" данные отправляются на сервер методом POST, вытаскиваются оттуда, обрабатываются, запоминаются, и отображается форма с новыми полями следующего шага Вариант 2: С ajax-подгрузкой новой формы. Данные также отправляются на сервер, но аяксом, без перезагрузки страницы. И после всех обработок в блок с текущей формой подгружается форма с новыми полями следующего шага. Вариант 3: С с помощью JS. В html выводим 3 div, в каждом из которых - нужный шаг. Второй и третий div делаем display:none. И при нажатии на кнопку "Вперед" текущий div скрываем, следующий - отображаем. Руки тянутся к варианту 3. Что скажете? Можно так делать? Есть какие-то особенности, подводные камни? Понятное дело, все зависит от задач. Но основные условия и требования я рассказал. Заранее спасибо. Проще всего в реализации - это отправка запроса POST с перезагрузкой страницы (синхронные запросы). Ввёл данные, нажал на "Далее" или "Вперёд" и вуаля, заполняй следующую форму. Наиболее userfriendly - асинхронные запросы (ajax). То есть жмакнул "Далее", данные с первого шага зафиксировались, и добавилась форма для второго шага... ну итак далее. Первый шаг, кстати, я бы не стал скрывать. Вариант с реализацией на js я бы не стал использовать. 1) В любом случае данные надо отправлять на сервер, потому что их, вероятно, надо провалидировать. А ещё лучше отправлять их на сервер, что бы в сессию пользователя сохранить и не заставлять его вводить эти данные дважды, в случае если уйдёт со страницы что-то докупить, а потом вернётся к оформлению. А учитывая, что данные отправляются в любом случае, то почему бы не получить форму для нового шага с сервера? 2) С учётом первого шага невозможно реализовать показ/скрытие блоков с полями. Придётся или отправлять одну и ту же форму по частям, что усложнит её приём на сервере, или же делать несколько форм, что усложнит их общую отправку на последнем шаге (форму в форму вкладывать запрещено, потому обернуть всё в одну общую форму не получится) Потому я бы выбрал один из первых двух вариантов, но дальше выбор зависит уже строго от задачи (требований) и личных предпочтений. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2016, 19:39 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
По мне так 3 вариант предпочтительнее - не надо дёргать сервер по каждому чиху. Это, если нет никаких требований и условий (а они не озвучены на данный момент) по зависимостям второго шага от первого и третьего от второго. Вот как планируете подтвердить на третьем шаге данные первого шага - ещё раз внимательно по буквам перечитать почтовый адрес или ввести контрольный код из письма? Ежели по буквам проверять - то пойдёт и третий вариант. А ежели контрольным кодом - то, как минимум, без асинхронного запроса на отправку письма а первом шаге не обойтись. Так то все три варианта имеют право на жизнь. Только, сложно что-то советовать, не зная конкретных тонкостей и нюансов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2016, 19:46 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
ПрограмёрВ любом случае данные надо отправлять на сервер, потому что их, вероятно, надо провалидировать Тут логика такая: валидация ВСЕХ данных будет осуществляться после 3го шага перед отправкой данных в платежную систему. На третьем шаге будет подтверждение данных, введенных ранее. Но это будут также текстовые поля, собранные из шагов 1 и 2 в одну единую форму, т.е. на этапе подтверждения их же можно будет и отредактировать. Но возникает другой вопрос: сейчас функционал такой, простой. Кто знает, что завтра захочет заказчик? А скорее всего, что-то захочет. В результате придется все переделывать. Напрашивается вывод, что лучше такие вещи на JS не делать. Хотя с другой стороны, всего не предусмотришь, всегда чего-то придется переделывать ... vkle , никаких подтверждений с почты не будет. Сейчас написал, чуть подробнее. Единственная необходимость отправки данных на сервер - это перед отправкой их в платежную систему после третьего шага. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2016, 22:49 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
urukhayЕдинственная необходимость отправки данных на сервер - это перед отправкой их в платежную систему после третьего шага.долго думал. это действительно по-русски написано? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2016, 23:14 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
urukhayтекстовые поля, собранные из шагов 1 и 2 в одну единую форму,Нафига что-то собирать? Делаете одну форму. Внутри формы в один див кладёте поля ввода первого шага. Во второй - поля второго. В третий - кнопку отправки. Видимостью дивов на первом и втором шагах скрываете/показываете что надо. На третьем шаге показываете все три дива. Чтобы форму не отправляли раньше времени по Enter'у, ставите свой обработчик на onsubmit. На первых двух шагах он должен false вертать, на третьем - можно там же предварительно сперва проверить входные данные (все ли поля заполнены, допустимость значений полей), потом return true (или сабмит формы). urukhayКто знает, что завтра захочет заказчик? А скорее всего, что-то захочет. В результате придется все переделывать.Ага, а ТЗ, конечно, это т очка з рения (заказчика), а никак не документ, где перечислены оплачиваемые хотелки. Захочет чего-то сверьху - чего ж не переделать то за дополнительную оплату? Мы только за! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2016, 23:56 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
vkle, Если это средненькая или подвальная конторка, которая пилит сайты, то такие компании очень часто на уступки заказчику идут. Я уже не помню когда последний раз проект заканчивал строго по ТЗ. И вот тут самое интересное... Когда каждый следующий допил будет расти в стоимости по экспоненте (а с озвученным подходом так и будет), и заказчик и руководство начинают задаваться ненужными вопросами. Никого не интересует специалист, который проектирует продукт так, что бы его доработка занимала 20 часов вместо часа. И если это руководящая должность, то такой сотрудник там не на долго :) P.S. Не забываем про энтузиазм и сознательность самого разработчика. Меня, например, не очень радует выталкивать продукт низкого качества... когда в нём не то что нет хороших решений, а когда его стыдно показывать на собеседовании или другу. Как-то не очень весело на вопрос "а почему тут так топорно сделал" отвечать "зато быстро". Намного приятнее хвастаться гениальностью своих решений, даже если они были дорогостоящими (что зачастую и удешевляет последующую разработку). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2016, 00:44 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
vkle, Согласен с Програмёр, редко бывают случаи, когда заканчиваешь проект чики-чики по ТЗ. А если быть точнее, то никогда. У меня по крайней мере. Всегда есть какие-то отступления. Это - во-первых. Во-вторых, доработки после запуска проекта никто не отменял. И не суть важно, за доп плату они или нет. Я всегда стараюсь продумывать архитектуру на будущее. Пытаюсь понять, что в дальнейшем может измениться, и как лучше спроектировать систему, чтобы потом мне полпроекта переделывать не пришлось. Ладно, всем спасибо за обсуждение. Однозначного ответа не ждал, буду думать, что выбрать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2016, 04:24 |
|
Пошаговое заполнение формы
|
|||
---|---|---|---|
#18+
Ребят, да я и сам прекрасно понимаю, что всё не озвучить в ТЗ сразу, какая-то мелочёвка да вылезет. Хорошо, если одна галочка не переворачивает всю концепцию с ног на голову. Сейчас неспешно пилю проектик личного кабинета для некой конторы. ТЗ - кошкины слёзы. Кто делал - да фик знает. Не, картинки с макетами веб-страниц там есть, конечно. Читаем: пользователь попадает на страничку с формой для ввода логина и пароля. Вроде, логично. А никто не знает, откель этот самый пользователь возьмёт эти логин и пароль - дадут ли ему их в бухгалтерии или сам сочинить должен? Контачу по данному вопросу, опять же, через руководителя с заказчиком. О, оказывается, ещё и регистрацию надо, да с подтверждением по e-mail, да с проверкой дня рождения (о как!), ну да ладно. Понятно изначально, что несчастные шесть означенных веб-сраничек выльются в 10 или в 12. Мне лично оно без разницы, у меня оклад - могу копать, а могу не копать. А вот заработает ли контора на этом проекте или уйдёт в "минус пять тыщ рублей" - так это уж у начальников пусть голова болит. Разработка то уже оплачена. Да, кто и почему удумал этот проект (который контачит с MsSQL-ной базой и должен использовать для формирования PDF-ок ексешник с удалённой виндовой машины) вкрячить на виртуалку под CentOS - сие мне тоже не ведомо. Но, зато, весело. Уже чуть более месяца, вперемешку с согласованиями. Хотя, делов то там на неделю от силы... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2016, 07:48 |
|
|
start [/forum/topic.php?fid=23&msg=39345274&tid=1460860]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 147ms |
0 / 0 |