Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с аяксом при валидации форм

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
teddy
Отправлено: 09 Августа, 2013 - 16:14:43
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Здравствуйте. Сделал обычную форму для регистрации пользователей на аяксе. То есть принцип такой - если есть ошибка на сервере, пользователь получает сообщение об ошибке рядом с каждым инпутом. Но тут возникает следующая проблема:

Прошу в первую очередь обратить внимание на скриншот

Как видно, те формы, которые ещё не выбраны, все равно выдают ту или иную ошибку.

Связано это с тем, что у всех инпутов я подписан на событие onchange, которое в свою очередь вызывает одну и ту же функцию у всех инпутов. Вызываемая функция отправляет на сервер данные из форм и получает ответ.

Как можно сделать, что бы ошибки выводились только если мы нажали на инпут и что то в него ввели?

П:С в этой функции, которая отправляет/получает данные от сервера и вывожу ошибки следующим образом:
document.getElementById("errLogin").innerHTML = result['errLogin'];

Видимо из за этого и получается такой бардак... Это что, нужно для обработки каждой ошибки свою функцию писать, которая в свою очередь будет вызывать ту функцию, что получает ответ от сервера и обрабатывать отдельно для каждого инпута? Нет уж... бардак получается

Поэтому и пришел к вам, за более адекватным решением Улыбка Буду рад вашей помощи
Прикреплено изображение (Нажмите для увеличения)
sc.jpg
 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Августа, 2013 - 17:53:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Повесьте обработчик на событие "blur".
 
 Top
teddy
Отправлено: 09 Августа, 2013 - 18:24:11
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




armancho7777777
Пробовал, не помогает Недовольство, огорчение Потому что при вызове функции которая "общается" с сервером заполняются выводятся все ошибки... ну а когда приходим в первый раз и отправляем запрос POST-ом на сервер(при событии), все поля являются пустыми(кроме заполненного), соответственно это нормальное поведение т.к функция вернет результат для каждого инпута.

Есть вариант написать для каждого инпута отдельную функцию, но думаю это не хорошо...

И ещё один вариант, проверять все на клиенте, а на сервере просто возвращать false если данные пришли левым путём и не соответствуют формату.

Но с другой стороны будет проблематично проверить логин. Т.к используемый логин может быть уже зарегистрирован...

Запутал, да? Улыбка Я просто код сюда выставлять не хочу, ибо там на клиенте 100+ строк кода и на сервере аналогично. Не думаю что кто то будет это разгребать, поэтому думал идею подскажет кто...

Растерялся

(Отредактировано автором: 09 Августа, 2013 - 18:25:39)

 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Августа, 2013 - 04:38:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Зачем всю форму-то отправлять ?
Давайте код сюда.
И заверните его в спойлеры.
 
 Top
teddy
Отправлено: 10 Августа, 2013 - 06:54:44
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Блин, сначала вывалил сюда кучу кода и через 15-20 минут решил проблему)))

Благодарю за внимание armancho7777777

Проблема была на сервере

Дело в том, что POST всегда существует Улыбка Надо было просто проверить на эмпти и все... ) т.е если empty, то ответ не отдаем... соответственно не тронутные поля ответа от сервера не получат... а пустоту уже при событии можно проверить на клиенте(на сервере в любом случае возвращаем false если пусто) и всё Улыбка

Я просто привык писать подобные скрипты без json-а и обычно выдавал результат только при submit, а здесь чуть по другому нужно... поэтому слегка тупанул )

(Отредактировано автором: 10 Августа, 2013 - 08:05:22)

 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Августа, 2013 - 08:43:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




teddy пишет:
Благодарю за внимание

Не за что.
Для отслеживания ошибок при работе с ajax предлагаю воспользоваться этим решением.
 
 Top
teddy
Отправлено: 10 Августа, 2013 - 15:21:21
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




armancho7777777
Возьму на вооружение Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB