Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

trigger('click') срабатывает дважды


Recommended Posts

Появилась интересная проблема. Я взял скрипт загрузки файла "из коробки" (версия 2.1). На локальном сервере всё работает как положено, но после установки на другой (реальный) сайт той же версии появилась проблема, что при нажатии на кнопку (button type="button" id="button-upload"), после которой появляется форма для отправки файла и включается триггер на нажатие появившегося (input type="file"), дважды появляется диалоговое окно выбора файла. Первый раз после выбора файла, название его не фиксируется в (input type="file"), а второй раз уже фиксируется и срабатывает условие на появившееся значение в поле input и файл загружается. Кто может подсказать в чем может быть проблема?

Как решение подобных ситуаций предлагают использовать event.preventDefault() и event.stopPropagation(), но то ли я не так/не там их применял, то ли проблема в чем-то другом.

Вот сам скрипт:

$(document).ready(function() {
  $('#button-upload').on('click', function() {
      $('#form-upload').remove();
      $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');
      $('#form-upload input[name=\'file\']').trigger('click');
      if (typeof timer != 'undefined') {
          clearInterval(timer);
      }
      timer = setInterval(function() {
          if ($('#form-upload input[name=\'file\']').val() != '') {
              clearInterval(timer);
              $.ajax({
                  url: 'index.php?route=catalog/download/upload&token=<?php echo $token; ?>',
                  type: 'post',		
                  dataType: 'json',
                  data: new FormData($('#form-upload')[0]),
                  cache: false,
                  contentType: false,
                  processData: false,		
                  beforeSend: function() {
                      $('#button-upload').button('loading');
                  },
                  complete: function() {
                      $('#button-upload').button('reset');
                  },	
                  success: function(json) {
                      if (json['error']) {
                          alert(json['error']);
                      }
                      if (json['success']) {
                          alert(json['success']);
                      }
                  },			
                  error: function(xhr, ajaxOptions, thrownError) {
                      alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                  }
              });
          }
      }, 500);
  });
});

 

Надіслати
Поділитися на інших сайтах


1 час назад, Prooksius сказал:

может на странице есть две такие формы, два таких input type="file", поэтому оба и открываются.

такая форма только одна, есть еще <form class="form-horizontal">, но эта повлиять не могла, еще есть  <input type="checkbox>, а также несколько textarea, но никаких совпадений по названиям нет.

1 час назад, Prooksius сказал:

посмотрите, есть ли в консоли ошибки какие..

смотрел, там пусто

Надіслати
Поділитися на інших сайтах


3 часа назад, stasonsky сказал:

#button-upload

лучше поменять на что-то свое, уникальное.

3 часа назад, stasonsky сказал:

#form-upload

тоже.

 

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.