Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Почему срабатывает отправка 2 раза? (https://javascript.ru/forum/css-html/80941-pochemu-srabatyvaet-otpravka-2-raza.html)

De12 30.08.2020 12:05

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

case 'buy':
         $('.js-buy').bind('click', function() {
            var text = $(this).attr('data-service');
            $('.js-buy-form .js-title').text(text);
            $('.js-buy-form .js-service').val(text);
            $('.js-buy-form .js-message').hide();
            $('.js-buy-form').removeClass('invisible').addClass('visible');
            return false;
         });
         $('.js-buy-form .js-close').bind('click', function() {
            $('.js-buy-form').removeClass('visible').addClass('invisible');
            return false;
         });
         $('.js-who label').bind('click', function() {
            var is_org = $(this).attr('data-org');
            if (is_org == '1') {
               $('.js-org').show();
            } else {
               $('.js-org').hide();
               $('.js-org input').val('');
            }
            return true;
         });
         $('.js-buy-form form').bind('submit', function() {
            var has_errors = false;
            $('.js-buy-form .js-required').removeClass('error').each(function() {
               if ($(this).is(':visible') && $(this).val() == '') {
                  has_errors = true;
                  $(this).addClass('error');
               }
            });
            var $mess = $('.js-buy-form .js-message');
            $mess.hide().removeClass('error');
            if (has_errors) {
               $mess.addClass('error').text('Заполните выделенные поля.').show();
            } else {
               $.ajax({
                  url : '/forms/buy.php',
                  data : $(this).serializeArray(),
                  dataType : 'json',
                  type : 'POST',
                  cache : false,
                  success : function(answer) {
                     if (answer.ok) {
                        $mess.text('Ваш заказ отправлен.').show();
                        $('.js-buy-form').removeClass('visible').addClass('trans-delay invisible').on('transitionend', function(){
                           $(this).off('transitionend');
                           $('.js-buy-form form').trigger('reset');
                           $('.js-org').show();
                        });
                     } else {
                        $mess.addClass('error').text('Ошибка отправки. Попробуйте позже.').show();
                     }
                  },
                  error : function() {
                     $mess.addClass('error').text('Ошибка отправки. Попробуйте позже.').show();
                  }
               });
            }
            return false;
         });
         break;

laimas 30.08.2020 13:31

Надо было html код показать, ибо проблема скорее всего в том, что события всплывают, а у вас этих щелчков немерено. И зачем установку обработчиков делать в switch, что он обрабатывает?


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