Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Повторение события внутри другого события (https://javascript.ru/forum/jquery/30747-povtorenie-sobytiya-vnutri-drugogo-sobytiya.html)

OlegDegtev 14.08.2012 15:10

У меня есть проверка перед аякс запросом на заполненость полей. Запрос выполняется только если оба поля заполнены. Внутри запроса(где function(data)) у меня присутствует строка
$("#ajax_comment input[name=title], #ajax_comment textarea").val("");

ТОесть эта строка должна очистить содержимое полей, и при повторении они не пройдут проверку. Но, они проходят и повторяется запрос. Непонимаю((

Если разделить события на 2 отдельных события, то повторений не наблюдается. Но почему-же повторяются вложенные?

vadim5june 14.08.2012 15:20

такое ощущение что вот это событие добавляется каждый раз при добавлении комментария-а должно только один раз
поставь перед ним аlert
$(".add").click(function(event)

OlegDegtev 14.08.2012 15:29

alert("До");
$(".add").click(function(event){
alert("После");

Так и есть. "До" выскакивает 1 раз только. "После" уже повторяется. Первый раз один раз, второй - два, третий - три и. т. д.

Заметил что первый раз запрос обрабатывается дольше, успевает появиться бегущая строка. Остальные разы неуспевает и моментально выскакивает сообщение о успешном добавлении комментария.

ПОлучается что кнопка формы как-то накапливает на себе события клика. Первый раз кликнули - выполнился обработчик. Второй раз кликнули - кнопка подумала что кликнули 2 раза и обработчик выполнился 2 раза и так далее.
Интересно что не работает строка очистки содержимого формы внутри запроса. Я уже не знаю что предположить, но может эти события как-то параллельно стартуют? Ведь еслиб был цикл, то после очистки переменные получали бы пустые значения, а в них содержатся первоначальные данные.

vadim5june 14.08.2012 15:40

Цитата:

Сообщение от OlegDegtev
"До" выскакивает 1 раз только.

Каждый раз при клике или вообще один раз а потом не выскакивает-так должно быть
Цитата:

Сообщение от OlegDegtev
Интересно что не работает строка очистки содержимого формы внутри запроса

у вас наверно несколько экземпляров формы создается-тогда нужно в конце обработчика после
fadeOut(1500);эту форму удалять

OlegDegtev 15.08.2012 08:50

Полное удаление и создание формы вновь действительно решило проблему. Видимо вы были правы по поводу нескольких экземпляров. ПРавда в какой строке это происходит - так и осталось для меня загадкой.

vadim5june 15.08.2012 11:25

Цитата:

Сообщение от vadim5june
ПРавда в какой строке это происходит - так и осталось для меня загадкой.

нужно разобраться до конца-во время клика происходит создание еще одного экземпляра-то есть разберитесь почему алерт(ло) каждый раз срабатывает-должен только один раз при создании первой формы-а сам факт срабатывания говорит что создалась еще одна копия формы

OlegDegtev 15.08.2012 11:33

Нет, алерт ДО срабатывает только 1 раз при клике и появлении формы. Несколько раз срабатывает алерт ПОСЛЕ. В принципе роблема уже решена, спасибо за подсказку с формами)
ПОследними строками я просто хотел сказать что интересно все-же почему так работал мой скрипт


Часовой пояс GMT +3, время: 04:08.