Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Ajax и проверка форм


Автор: Raily 24.3.2010, 16:35
У меня такой вопрос - есть форма, у элементов которой надо проверить правильность ввода данных. Если данные введены правильно, то осуществляется переход в нужную мне функцию PHP.  
Вот форма
Код

print "<form id='f2' name='f2' action='".base_url()."travel/page3' method='post' onSubmit='return sub_travelpage2()'>";


Есть скрипт, который разрешает или нет идти дальше при помощи return true или return false. 

Но мне нужно в эту систему внести Ajax. То есть JS берет данные, посылает их проверочной функции PHP, тот на стороне сервера проверяет их корректность, далее передает скрипту данные об ошибках и скрипт либо пускает дальше (return true), либо выдает alert о том, что поля заполнены неверно. 

Но дело в том, что ут получают подвязаны две функции JS: одна берет данные, а другая пускает или нет дальше. Если я пишу первую функция в onSubmin формы, то не происходит Return второй функции, а если написать туда вторую функцию, то не будет аякса. 

Вопрос - как можно такой реализовать? Проблема заключается не в проверке данных - всё проверяется и приходят ответы проверки от сервера, а проблема в том, как остановить Submit в случае ошибок ввода данных в случае с использованием двух JS-функций?

Автор: IDVsbruck 24.3.2010, 18:19
1. Прописываем глобальную переменную var verified = fasle;
2. Нажимаем submit и вызываем обработчик (verified = false).
3. Делаем ajax-запрос на проверку.
4. Там же, в обработчике, в конце ставим return false (канселим отправку формы).
5. Получаем ответ с сервера: если неправильно, пишем что, а если правильно, то сабмитим форму и verified = true.
6. Обработчик сабмита имеет разделение: если verified == true, ничего не делаем (форма сабмитится), если false, то шаг 3.

Автор: Raily 25.3.2010, 11:36
спасибо большое! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)