JQuery триггер загрузки события click не работает в Firefox FF - PullRequest
0 голосов
/ 08 февраля 2011

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

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

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

JF включен в 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>

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Согласно этот вопрос невозможно спровоцировать щелчок на вводе файла в соответствии с дизайном (из-за проблем безопасности). Хотя он работает в 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 применяется ДОЛЖЕН иметь уникальный идентификатор приписывать. Вы можете ссылаться на элементы через класс, но каждый элемент должен иметь уникальный идентификатор.

0 голосов
/ 08 февраля 2011

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

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

Извините, игнорируйте, что он не делает то, что вы хотите!

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

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

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

by:

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

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

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

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

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

...