Имитация нажатия на загрузчик valums Ajax

#javascript #jquery #ajax #file-upload

#javascript #jquery #ajax #загрузка файла

Вопрос:

У меня возникли проблемы с получением jQuery ‘click ()’ для работы с кнопкой Valums Ajax Uploader.

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

Пробовал с trigger и live также, с идентичным результатом.

Это вызов:

 $("div[class='qq-upload-button']").click();
  

Я вызываю неправильное событие?

Ответ №1:

У Divs нет событий щелчка. Вместо div вы должны вызвать событие нажатия кнопки с таким кодом.

 document.getElementById('btnUpload').click();
  

Однако кнопка, сгенерированная Valums Ajax Uploader, не имеет идентификатора или класса. Вы должны добавить атрибут id, отредактировав скрипт valums (fileuploader.js ). Просто найдите строку input.setAttribute("type", "file"); в файле javascript и вставьте input.setAttribute("id", "btnUpload"); под ней.

Комментарии:

1. Нет необходимости добавлять идентификатор, вы можете просто связать его с входом внутри основного div, у которого уже есть ваш идентификатор. Я буду использовать jQuery для демонстрации… $(‘#uploadElementID ввод’). триггер (‘click’); где #uploadElementID — это свойство элемента, с помощью которого вы настраиваете FileUploader.

2. @sevenkul: Хорошее решение. Это отлично сработало для моего варианта использования.

Ответ №2:

Я думаю, вам нужно найти функцию, вызываемую при нажатии, и вызвать ее вручную.

Комментарии:

1. Я прочитал исходный код плагина, и там нет привязки к клику (я думаю). Какие еще существуют возможности для прослушивания событий щелчка без использования click?