2016-10-29 4 views
1

Я пытаюсь написать функцию удаления в Dropzone.js. Для этого мне нужен идентификатор файла так, как он был загружен.jQuery получение текстового содержимого диапазона

Я попытался получить свойство объекта без успеха. Теперь я пытаюсь использовать jQuery для получения значения или текстового содержимого диапазона, который имеет его.

enter image description here

это снимок экрана структуры. Код JQuery Я пытаюсь это:

var loooot = $(".dz-filename").parents('span').text(); 

Чтобы быть более точным, я пытаюсь получить номер 1_1477778745352 (что метка времени).

Код Dropzone выглядит следующим образом:

<script> 

var listing_id = "1"; 

// these are the setting for the image upload 
Dropzone.options.pud = { 
acceptedFiles: ".jpeg,.jpg,.png,.gif", 
uploadMultiple: false, 
paramName: "file", // The name that will be used to transfer the file 
maxFilesize: 1, // MB 
addRemoveLinks: true, 
maxFiles: 10, 
renameFilename: function (filename) {return listing_id + '_' + new Date().getTime();}, 
init: function() 
{ 
this.on("removedfile", function(file) 
    { 
    var loooot = $("span", ".dz-filename").html(); 
    alert(loooot); 
    }); 
} 
}; 
</script> 
+0

' file.name' должен содержать имя файла в обратном вызове 'deletedfile' – Ultrazz008

+0

Это было первое, что я пробовал, но он возвращает имя загруженного файла ПЕРЕД тем, как он переименован. После переименования я могу увидеть имя ney, когда я навешиваю над миниатюрой изображения, но я не могу получить новое переименованное имя. – Sandor

+0

Но вы можете сохранить его в dropzone, после загрузки как я делаю – Ultrazz008

ответ

1

Использование:

var loooot = $("span", ".dz-filename").html(); 

Рабочая Demo.

var loooot = $("span", ".dz-filename").html(); 
 
alert(loooot);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class="dz-filename"> 
 
    <span>Test</span> 
 
</div>

EDIT

Так как вы настраиваете текст динамически может случится, что JQuery читать HTML до того, что вы установите его, чтобы предотвратить это, Вы должны вызвать эту функцию после отметки времени как обратного вызова (я не могу помочь вам, не видя, как вы устанавливаете текст span). Так что-то вроде:

function setSpan(callback) { 
    // Set your stuffs 

    // Call the callback 
    callback(); 
} 

function getText() { 
    // I'm the callback witch get the html 
} 

//Onload 
setSpan(getText()); 

EDIT

Для DropZone вы можете использовать queuecomplete, что запуск функции после очереди, я не эксперт, но я Dropzone предположить:

init: function() { 
    this.on("queuecomplete", function (file) { 
     //Get span html 
     alert("All files have uploaded "); 
    }); 
    } 
+0

Переменная loooot возвращается как Undefined – Sandor

+0

Это работает, попробуйте демонстрацию и фрагменты. – paolobasso

+0

Возможно, он возвращается Неопределенно, поскольку Dropzone создается динамически. Ваш пример работает, потому что он статичен. Это мое лучшее объяснение. Можете ли вы изменить свой ответ, чтобы он работал с динамически создаваемыми элементами? – Sandor

1

Это становится неопределенным, потому что dropzone работает динамично, используйте это:

$('body').find(".dz-filename").find('span').text(); 

Лучший способ сделать это, чтобы объявить Dropzone:

//first declare somewhere variable 
var my_drop; 

// then on creating dropzone: 
my_drop = new Dropzone('.dropzone', { 
/* your setup of dropzone */ 
}); 

Затем вы можете извлечь информацию о файлах с этим:

my_drop.files[0].name 

[0] представляют первый файл, вы можете перебрать их, если есть больше, чем один.

+0

Если это так, то начиная с 'body' не будет помогите много. Нельзя получить то, чего там нет. – adeneo

+0

Это на теле, оно было создано только после того, как дом был готов, поэтому вы не можете получить его только с именем класса 'dz-filename' – Ultrazz008

+0

Это дало мне пустую переменную ... – Sandor

1

Попробуйте использовать JQuery's .text();, чтобы получить внутренний текст Обновление: используйте это с DOM .ready() вот так.

Глубокий селектор

$(document).ready(function(){ 
    var fname = $("#pud .dz-filename span [data-dz-name]").text(); 
}); 

ИЛИ (если форма является динамическим)

function get_fname(){ 
return $("#pud .dz-filename span [data-dz-name]").text(); 
} 

Затем используйте get_fname();

+0

У меня есть пустая переменная. – Sandor

+0

Является ли ваша форма динамической? –

+0

Эта часть динамична. – Sandor

0

рабочего раствора я нашел это:

init: function() 
    { 
    this.on("removedfile", function(file) 
    { 
    var loooot = $(file.previewElement).find('[data-dz-name]').text(); 
    alert(loooot); 
    }); 
    } 
Смежные вопросы