Триггер jQuery для загрузки события щелчка не работает в Firefox FF

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

Мое решение работает в IE7, но не в FF.

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

JS включен в FF, если я вставляю предупреждающие сообщения, он достигает точки срабатывания нажатия на кнопку ввода.

<select class="selectLogoTop" name="selectLogoTop">
   <option value="0">0</option>
   <option value="1">1</option>
</select>

<input class="fileupload1" type="file" />

<script type="text/javascript">
   $(document).ready(function() {
      $('.fileupload1').uploadify({
        'uploader'       : '../../../admin/uploadFileResources/uploadify.swf',
        'script'         : '../../../admin/uploadFileResources/upload.cfm',
        'cancelImg'      : '../../../admin/uploadFileResources/cancel.png',
        'folder'         : '../../../upload_BE/offers/htmlfiles/5953/images/',
        'multi'          : true
      });

      $('.selectLogoTop').change(function(){
         $('.fileupload1').trigger("click");
      });
   });
</script>

person drew    schedule 08.02.2011    source источник
comment
Хотя Firefox 4; теперь поддерживает щелчок по вводу файла, который считается всплывающим окном, а событие onchange не считается допустимым всплывающим событием.   -  person Neil    schedule 11.02.2011


Ответы (2)


В соответствии с этим вопросом невозможно инициировать щелчок по вводу файла по дизайну (из-за проблемы с безопасностью). Хотя он работает в Chrome, мне не повезло с этим кодом и в Firefox (и в Opera).

<select class="selectLogoTop" name="selectLogoTop">
   <option value="0">0</option>
   <option value="1">1</option>
</select>

<input class="fileupload1" type="file" />

<script type="text/javascript">
   $(document).ready(function() {
      $('.selectLogoTop').change(function(){
         $('.fileupload1').trigger("click");
      });
   });
</script>

Зачем вам нужно запускать ввод файла со ссылкой? Если это связано с ограниченным стилем, который можно применить к входным данным, эта статья упоминалось в другом вопросе.

Кроме того, возможно, это не связано, но в документации Uploadify говорится, что вам нужно указать входной файл с уникальным идентификатором. У тебя только класс.

Каждый элемент, к которому применяется Uploadify, ДОЛЖЕН иметь уникальный атрибут ID. Вы можете ссылаться на элементы через класс, но каждый элемент должен иметь уникальный идентификатор.

person Reiner Gerecke    schedule 08.02.2011

Это невозможно в Firefox. Однако взгляните на изящный обходной путь, предложенный Рамасом в ответ на тот же вопрос здесь:

В JavaScript могу ли я программно запустить событие щелчка для элемента ввода файла?

Извините, ИГНОРИРУЙТЕ, ЧТО это не делает то, что вы хотите!

ВОТ ЧТО Я БЫ СДЕЛАЛ в этом случае:

замените строку кода, в которой говорится:

$('.fileupload1').trigger("click"); 

by:

$('.fileupload1').fadeOut(300).delay(100).fadeIn(300, function(){$(this).focus().trigger("click")});

Это заставит элемент INPUT мигать (вы можете изменить его так, чтобы он мигал пару раз), и он получит фокус, который подсветит его в Firefox, изменив его цвет. Таким образом (при условии, что он находится рядом с полем ВЫБОР) пользователь увидит, что ему нужно нажать кнопку «ОБЗОР» элемента ВВОД. Я знаю, что это не идеально, но это рабочая выдумка.

См. пример по адресу:

http://www.jsfiddle.net/elusien/6XrSS/2/

С уважением Нил

person Neil    schedule 08.02.2011