2011-04-14 42 views
166

可能重複:
jQuery: get the file name selected from <input type=「file」 />jQuery的 - 如果一個文件在文件輸入被選中檢測

我有一個標準的文件輸入框

<input type="file" name="imafile"> 

我也在頁面上有一些文字,例如

<span class="filename">Nothing selected</span> 

我想知道是否可以在文件輸入框中選擇文件的名稱進行文本更新?

乾杯,

+4

@jnpcl - 我不認爲這是後做同樣的事情,我什麼想做 – BigJobbies 2011-04-14 23:38:33

+0

它顯示'「字段的'filename'。這不正是**你想要做什麼? – drudge 2011-04-14 23:47:42

+3

當用戶選擇文件時,他希望事件發生。這與選擇文件後獲取名稱明顯不同。因此,這不是重複的。 – MetalPhoenix 2016-01-12 19:32:05

回答

254

您應該能夠將事件處理程序連接到輸入的onchange事件和有調用一個函數來設置你的跨距中的文本。

<script type="text/javascript"> 
    $(function() { 
    $("input:file").change(function(){ 
     var fileName = $(this).val(); 
     $(".filename").html(fileName); 
    }); 
    }); 
</script> 

您可能希望這樣你就可以選擇基於那些ID添加到您的輸入範圍具體到您所關注的,而不是在DOM其他文件輸入或跨度的元素。

+26

如果再次選擇相同的文件,onchange不會被調用。我如何克服這個..? – shashwat 2014-01-29 09:49:50

+1

@shashwat你可以使用live而不是改變來解決這個問題。示例:將代碼從$(「input:file」)更改爲$(「input:file」)。live – 2014-04-01 17:57:38

+7

@shashwat綁定到輸入的click事件並將輸入值設置爲null。 – 2014-07-03 21:24:24

11

我建議嘗試更改事件?測試它是否有值,如果有的話,你可以繼續使用你的代碼。 jQuery有

.bind("change", function(){ ... }); 

或者

.change(function(){ ... }); 

它們的等同物。

http://api.jquery.com/change/

一個獨特的選擇改變你的name屬性ID,然後jQuery("#imafile")或所有文件輸入的一般jQuery('input[type="file"]')

相關問題