![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| KonstRuctor |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Всем привет! Проверяю простенькую форму:
По событию onblur() проверяю данные так:
У меня есть php-скрипт ajax.php, который выдает мне xml примерно такой:
Все работает, ошибки показываются. Но я не понимаю, как мне запретить делать саму отправку форму, пока есть ошибки. Другими словами, ошибки-то я на экран показал, но юзер запросто может нажать кнопку и отправить форму с ошибками. Разумеется, я ее проверю еще раз на сервере, это сделает php. Однако хочется сделать юзабильно. У меня есть функция onclick="return validateAll(myform)", которая прицеплена к кнопке. Получается, что придется этой функции еще раз проверять все поля? Как сделать правильно? Спасибо |
||||||
|
|||||||
| Shogun |
|
|||
|
сёгун-сан ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 8.6.2006 Где: Кишинёв Репутация: нет Всего: 11 |
Хммм...
return false в функции если ошибка. А также советую: 1. POST вместо GET 2. jQuery, Prototype ... вместо простого Javascript 3. JSON вместо XML не пожалеете имхо... -------------------- 2b || !2b |
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Я, признаться, ничего не понял.
Если ошибка -- return false это мне понятно, причем кристально понятно. Я не понимаю, как это реализовать в моем конкретном примере. По мере заполнения формы у юзера выскакивают предупреждения, что он что-то делает не так. POST, GET, XML, JSON -- в данном случае это не так важно. Предупреждения у меня работают. НО мне не понятно как запретить отсылать форму на сервер. Я имею в виду конкретно -- как в смысле примера кода, а не в смысле "если false, то не отправляй". |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 12 Всего: 33 |
Как то так
Так должно работать |
|||
|
||||
| KonstRuctor |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Спасибо, друзья. Все выходные работал.
Shogun натолкнул меня на интересные мысли. Сделал так: 1) В php-скрипте принимаю данные, если у юзера отключен javascript. Здесь все понятно. 2) В html-форме все проверки убрал вообще, назвал ее так:
3) В страницу подключил вот эти скрипты:
4) Написал скрипт valid.js:
5) Самое сложное было сделать скрипт ajax.php. Он большой, в нем у меня проверяются капча, юзернэйм, заполнение скрытого с помощью css поля email (роботы ведь его обязательно заполнят, и сработает "indexOK" Поэтому приведу тут только маленький его фрагмент, для ясности изложения мысли:
6) Основная идея = если нет ошибок, в скрипт valid.js приходит строка 'OK' и юзера перенаправляют в скрипт thankyou.php, где ему говорят "спасибо, друге" и оттуда уже на ту же страницу с формой. Это важно, чтобы сбросить параметры капчи, сессию и так далее. Внимание! несмотря на прямое указание везде где только можно "windows-1251" в базу записываются закарюки вместо букв. Только прямое указание $username = iconv('UTF-8', 'CP1251', $username); решает проблему. Вроде бы все работает. Хорошо понимаю, что Америки я не открыл и велосипеда не изобрел, вернее попытался Однако парился все выходные и решил поделиться своим решением. Если есть мысли по поводу моего алгоритма, буду искренне рад обсудить. Спасибо!!! |
||||||||
|
|||||||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
да в целом все стандартно, ничего нового.. у меня только притензии к оформлению кода.. и в PHP тебя не учили отделять код от HTML? -------------------- undefined |
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
При чем тут отделение php кода от HTML?
Я задавал вопрос по сути алгоритма и надеялся услышать конструктивный комментарий. Например, используй такой подход или попробуй делать так-то и так-то. Свой рабочий код я не показывал и, в принципе, в его рефакторинге не нуждаюсь. |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 12 Всего: 33 |
||||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
ужас такого подхода в том, что дизайн для такого сайта переделать практически нереально.. в таком проекте нельзя произвести разделение труда между программистом и дизайнером (верстальщиком).. да и просто сложно потом копаться.. выход - конечно шаблоны.. и лично я сторонник не нативных шаблонов.. -------------------- undefined |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 12 Всего: 33 |
Покажите пример как вы бы написали вывод html кода.
|
|||
|
||||
| fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
пожалуйста:
вот что-то типа того.. как видете, шаблон можно спокойно отдать дизайнеру (верстальщику), на любой стадии проекта.. если нужно переделать дизайн, нужно только переделать шаблон.. код остается.. так я поступаю всегда, даже если мне нужно всего лишь вывести простое сообщение, никогда не знаешь как это сообщение должно будет выглядеть завтра.. -------------------- undefined |
||||
|
|||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
и что касается, первоначальной темы, быть может есть смысл, передавать данные в виде JSON..
и лично я бы отказался от механизма form вообще, передавал бы данные аджаксом - но на этом я не настаиваю (хотя считаю так удобнее) -------------------- undefined |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |