jQuery触发uploadify click事件在firefox FF中不起作用

时间:2011-02-08 15:23:21

标签: jquery firefox triggers click uploadify

我想在下拉框中选择一个选项,为此触发可用于jQuery的uploadify,允许您上传文件。

我的解决方案适用于IE7但不适用于FF。

当您更改下拉列表时,它应显示一个窗口以浏览要上载的文件。在FF中没有出现。在IE中一切正常。

在FF中启用了JS,如果我插入警报消息,它就会触发点击输入按钮。

<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 个答案:

答案 0 :(得分:1)

根据this question,不可能通过设计触发对文件输入的点击(由于安全问题)。虽然它在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>

为什么需要通过链接触发文件输入?如果是由于可以应用于输入的样式有限,则在另一个问题上提到了this article

此外,可能没有相关性,但是上传文档说,您需要为文件输入提供唯一的ID。你的只有一个班级。

  

Uploadify的每个元素都是   申请必须有一个唯一的ID   属性。您可以参考元素   通过类,但每个元素必须有   一个唯一的ID。

答案 1 :(得分:0)

这在Firefox中是不可能的。但是,请看一下Ramas在回答同一问题时给出的整洁的解决方法:

  

In JavaScript can I make a "click" event fire programmatically for a file input element?

抱歉,知道它不能做你想做的事!

这是我在这种情况下要做的事情:

替换您的代码行:

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

由:

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

这将导致INPUT元素闪烁(您可以将其修改为闪烁几次)并且它将获得焦点,通过更改其颜色在Firefox中突出显示它。以这种方式(假设它靠近SELECT框),用户将看到他需要按下INPUT元素的“BROWSE”按钮。我知道这不是完美的,但它是一个可行的软糖。

请参阅以下示例:

  

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

此致         尼尔