Вы здесь

0

Здравствуйте друзья.

Собственно вопрос... Есть форма, изначально скрытая на страннице. И есть кнопка "Написать нам". По клику на кнопку должен отработать скрипт, и форма плавно выползает в зону видимости. Если на кнопку кликнуть снова, форма должна снова скрыться.

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

Получается что после ajax скрипт на сокрытие и показ формы работает через раз. Скрипт обернут в Drupal.behaviors.

Буду благодарен за помощь!

Версия Drupal: 
7.x
Категория: 
AJAXForm APIJavascript
Вопрос задан 24.01.2016 - 18:31
Аватар пользователя Turon
Turon
17

Если какой-то код не работает, то логично выложить этот код в вопросе

Комментарий оставлен 24.01.2016 - 19:12

Ну вот код:

$("#button").on("click",function () {
  $("#block-form").toggle();
});
  1. Сначала форма скрыта.
  2. Нажимаем на #button, форма выползает.
  3. При этом в стилях для #block-form назначается dispaly: block;
  4. Отправляем не заполненную форму.
  5. Выскакивает ошибка, что поля пусты.
  6. При этом dispaly: block; висит - все ок.
  7. Жмем #button, что бы форма уплыла, но dispaly: block; как висел, так и висит.
  8. Отправляю незаполненную форму еще раз.
  9. Форма сигнализирует об ошибке.
  10. Жму #button, что бы форма уплыла. Форма уплывает!!!
  11. И так, через раз... То работает, то нет.
Комментарий оставлен 25.01.2016 - 18:44

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

Комментарий оставлен 25.01.2016 - 18:48

Проверьте firebug'ом или любым другим браузерным отладчиком на наличие ошибок js, возможно дело в этом.

Комментарий оставлен 26.01.2016 - 13:39

Ответы

1

Если обернуто в Drupal.behaviors и срабатывает через раз, то попробуйте изменить код так:

$("#button").once().click(function(e){
    $("#block-form").toggle();
});
Ответ дан 25.01.2016 - 19:34
1

Возможно, проблема в том, что вы привязываетесь к изменяемому после выполнения ajax-запроса свойству id у html-элемента формы. Не видя кода сложно сказать что-то конкретное.

Ответ дан 25.01.2016 - 14:00