Как сбросить/очистить виджет перетаскивания filepicker.io?

Наше приложение обновляет скрытое поле нужным нам значением, когда виджет перетаскивания запускает onchange. Мы используем этот файл для дальнейшей обработки.

В настоящее время мы просто скрываем div, в котором находится виджет перетаскивания, до тех пор, пока он нам снова не понадобится. К сожалению, когда мы снова показываем этот div, виджет сохраняет имя файла последнего загруженного изображения, что сбивает пользователя с толку. Похоже, что они будут снова загружать тот же файл, когда на самом деле файл не будет загружен.

Как я могу указать виджету перетаскивания для повторной инициализации или очистки?


person aezell    schedule 30.11.2012    source источник


Ответы (2)


Это немного хак, но вы можете запустить событие щелчка в div .cancel, и оно очистит виджет.

Вот некоторый псевдокод, чтобы получить DOM-элемент и щелкнуть его: $( 'select span with X in it' ).get( 0 ).click();

person brettcvz    schedule 01.12.2012
comment
Я пытался это сделать. Однако он просто запускает диалоговое окно выбора файла filepicker.io и не очищает виджет перетаскивания. Я подтвердил, что получаю правильный элемент с помощью селектора jQuery. Вызов .click(), по-видимому, не имеет такого же эффекта, как щелчок мышью. - person aezell; 04.12.2012
comment
Мне удалось воспроизвести - jQuery, похоже, использует странную логику всплытия событий. Если вы вызываете .click() для объекта DOM, а не для объекта jQuery, он работает - person brettcvz; 04.12.2012

Вот хак, использующий атрибут data-fp-class:

<input id="myInput" type="filepicker-dragdrop" data-fp-button-class="btn btn-primary btn-small" data-fp-class="filepicker-dragdrop" data-fp-apikey="urKey" data-fp-mimetypes="image/png,image/jpeg" data-fp-container="modal" data-fp-maxsize="204800" data-fp-services="COMPUTER,URL,DROPBOX,FACEBOOK,GOOGLE_DRIVE,FLICKR,INSTAGRAM,PICASA,BOX">

После завершения загрузки и переключения на выбранный файл со знаком «x» справа вы можете снять выделение, выполнив следующие действия:

$('.filepicker-dragdrop span').get(0).click();

Им действительно нужен API для этого, так как это довольно распространено (обнаружение ошибки необходимо удалить)

person rynop    schedule 26.03.2013