Добрый день. Имеется такой кусок скрипта, который вставляет на страницу блок с загрузчиком AjaxUpload:
function product_foto(product_row) {
.................
................
if (ui.item['foto'] != '') {
html = '<div class="fotos">';
for (i = 0; i < ui.item['foto'].length; i++) {
foto = ui.item['foto'][i];
if (foto['type'] == 'file') {
html += '<div>';
html += '<a id="file-link-' + foto['product_foto_id'] + '-' + product_row + '" class="file-link"></a>';
html += '<a id="button-foto-' + foto['product_foto_id'] + '-' + product_row + '" class="btn"><?php echo $button_upload; ?></a>';
html += '<input type="hidden" name="foto_product[' + product_row + '][foto][' + foto['product_foto_id'] + ']" value="' + foto['foto_name'] + '" />';
html += '</div>';
}
}
html += '</div>';
$('#product_fotos' + product_row).append(html);
for (i = 0; i < ui.item['foto'].length; i++) {
foto = ui.item['foto'][i];
if (foto['type'] == 'file') {
var upbtn = $('#button-foto-' + foto['product_foto_id'] + '-' + product_row);
var uplnk = $('#file-link-' + foto['product_foto_id'] + '-' + product_row);
var upipt = $('input[name=\'foto_product[' + product_row + '][foto][' + foto['product_foto_id'] + ']\']');
new AjaxUpload('#button-foto-' + foto['product_option_id'] + '-' + product_row, {
action: 'upload.php',
name: 'file',
autoSubmit: true,
responseType: 'json',
onSubmit: function(file, extension) {
upbtn.after('<img src="view/image/loading.gif" class="loading" />');// не срабатывает
},
onComplete: function(file, json) {
if (json['success']) {
$('#info').html('<div class="success">' + json['success'] + '</div>');
uplnk.empty().append(json['filename']).show('fast');// не срабатывает
upipt.attr('value', json['filename']);// не срабатывает
}
if (json.error) {
$('#info').html('<div class="warning">' + json['error'] + '</div>');
}
}
});
}
}
}
}
Этот код вставляет на страницу блок с кнопкой загрузки файла, вот в таком виде:
<div class="fotos">
<div>
<a id="file-link-222-1" class="file-link"></a>
<a id="button-foto-222-1" class="btn">Загрузить файл</a>
<input type="hidden" name="foto_product[1][foto][222]" value="">
</div>
</div>
Все работает как надо если блок один, но иногда блоков таких может быть несколько:
<div class="fotos">
<div>
<a id="file-link-222-1" class="file-link"></a>
<a id="button-foto-222-1" class="btn">Загрузить файл</a>
<input type="hidden" name="foto_product[1][foto][222]" value="">
</div>
<div>
<a id="file-link-231-1" class="file-link"></a>
<a id="button-foto-231-1" class="btn">Загрузить файл</a>
<input type="hidden" name="foto_product[1][foto][231]" value="">
</div>
</div>
Вот здесь возникает проблема. Не правильно привязывается AjaxUpload и нажатие любой кнопки ведет к отработке загрузчика, но условия onSubmit и onComplete срабатывают применительно к последнему блоку, а не к тому, в котором нажата кнопка.
Отсюда вопрос, как разрулить эту ситуацию, чтобы AjaxUpload отрабатывал в блоке, в котором нажата его кнопка?