2011-02-08 67 views
0

我想選擇一個下拉框中的選項,併爲此觸發uploadify可用於jQuery,它可以讓你上傳一個文件。jQuery觸發uploadify單擊事件不工作在Firefox FF

我的解決方案在IE7中工作,但不是FF。

當您更改下拉菜單時,它應該顯示一個窗口以瀏覽要上傳的文件。在FF中沒有出現。在IE中一切正常。

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> 
+0

雖然火狐4;現在支持點擊一個文件輸入,它被視爲一個彈出窗口,並且onchange事件不會被視爲有效的彈出事件。 – Neil 2011-02-10 21:37:19

回答

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

此外,可能不相關,但Uploadify文檔說,您需要給文件輸入一個唯一的ID。你只有一個班。

Uploadify的每個元素是 應用於必須具有唯一ID 屬性。您可以通過類引用元素 ,但每個元素都必須有 唯一的ID。

0

這在Firefox中不可行。然而,看看由拉馬給出的解決辦法整齊響應這裏同樣的問題:

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

對不起,忽略了你想要的東西它不會做!

這裏就是我想在這種情況下,DO:

取代你的代碼行,上面寫着:

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

由:

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

這將導致輸入元件閃光(你可以修改它閃爍幾次),它會得到焦點,通過改變顏色在Firefox中突出顯示焦點。這樣(如果它靠近SELECT框),用戶將看到他需要按下INPUT元素的「BROWSE」按鈕。我知道這不是完美的,但它是一個可行的軟糖。

在參見一個例子:

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

問候 尼爾