Появилась интересная проблема. Я взял скрипт загрузки файла "из коробки" (версия 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);
});
});