2011-05-29 19 views
2

我已經試過了,(注意,我使用jQuery):的JavaScript - 點擊()在`噸鉻工作

function HandleFileButtonClick() 
{ 
    1. //$('#filesel').click(); 
    2. //document.replyform.image.click(); 
} 

HTML:

<input type="file" id="filesel" name="image" style="display: none;" /> 
<a href="#"><img src="<?=TF?>/img/att.png" style="height:20px;" onclick="HandleFileButtonClick();" /></a> 

既不是谷歌瀏覽器工作瀏覽器...任何想法,或替換jQuery點擊()

+0

另請參閱[Chrome和Firefox文件上傳瀏覽錯誤](http://stackoverflow.com/questions/5812174/chrome-and-firefox-file-upload-browse-bug)。 – alex 2011-05-29 11:39:47

回答

4

聽起來就像是在敲擊安全牆,該安全牆的設計只允許用戶觸發文件上傳框。

您可以嘗試絕對將瀏覽器的browse按鈕置於鏈接上,然後將其opacity設置爲0

+0

沒有/。不是安全牆,點擊事件在未隱藏時起作用。這是(我相信)一個優化功能,即刪除顯示所有聽衆:無事件,因爲他們不應該從那裏點擊。 – 2012-04-18 16:08:33

1

你想完成什麼?

也許這是你想要什麼:

function HandleFileButtonClick() 
{ 
    ... 
} 

$('#filesel').click(HandleFileButtonClick); 

注:

如果您正試圖通過調用的jQuery單擊功能觸發鼠標點擊事件,你是完全走出軌道。這是無法實現的。

+0

那麼爲什麼它可以在除Chrome以外的任何其他瀏覽器中工作?..我不是javascript/jquery的專家,但我認爲你已經走出軌道......順便說一下,函數調用onclick =「」不需要$ ( '#filesel')點擊(HandleFileButtonClick); – 2011-05-29 14:38:44

+0

@Andrei,真的,它真的會觸發點擊事件嗎?如果是的話,我想了解它。你能指點我一些鏈接/文檔,我可以瞭解它。 – ssapkota 2011-05-29 15:42:33

+1

你可以在這裏看到:http://api.jquery.com/click/ 描述:綁定事件處理程序到「click」JavaScript事件,或者觸發元素上的事件。 – 2011-05-30 14:17:09

4

我在這裏可以幫助其他人解決類似的問題。我嘗試使用.trigger('click')開始一個點擊事件到一個FILE字段,該字段的樣式='display:none',並發現Chrome與Mozila Firefox和IE不同,它不會讓它適用於這種風格。 解決方案不使用display:none,而是使用它來代替style ='width:0px; height:0px'。結果是一樣的,FILE字段被隱藏,並且您可以使用另一個按鈕來啓動它的作品,即使在Chrome中這次也是如此。

最好的問候窺視。

+0

偉大的解決方案,應該得到更多的關注! – Sophivorus 2011-11-23 15:42:58

+0

另外,我剛剛發現通過使用visibility:hidden; Chrome能夠讓它工作(還有Firefox,Opera和Safari,但並未嘗試使用Explorer)。 – Sophivorus 2012-04-10 00:48:31

1

,而不是使用CSS修復隱藏文件中的字段屏幕外/淡出人們的視線,而無需使用display:none,我使用了以下策略:

的CSS:

.hidden {display:none} 

的HTML

<input type="file" name="file-upload" id="file-upload" class="hidden" /><button>Upload</button> 

in原型:

$('file-upload').removeClassName('hidden').click();$('file-upload').addClassName('hidden'); 

jQuery中:

$('#file-upload').removeClass('hidden').click().addClass('hidden'); 

這與節拍在我看來,不同的瀏覽器的風格摔跤。適合我!

2

對於真實文件輸入,不要使用removeClass或addClass,或者使用width:1px。只需使用簡單的CSS:visiblity: hidden; position: absolute;

這將解決您在這種情況下的所有問題!