2011-05-24 114 views
0

我的問題很簡單:jQuery和輸入[類型=「文件」]問題

我想保存我選擇使用文件輸入,並使用jQuery我希望把他們的名字別的地方瞬間的文件名沒有刷新頁面。

也許我會用文件名替換一個簡單的文本。我會怎麼做?

例子:

在開始正文: 的Hello World

選擇文件後,這個 「Hello World」 將與 「my_filename.gif」 所取代。

想法?

回答

0

這裏有一個潛在的解決方案:

<input type="file" onchange="$('#helloWorld').val($(this).val());"/> 
<input id="helloWorld" value="Hello World"/> 

你可以檢查出來here

編輯:

修改它,以便將該值設置爲 「Hello World」 開始,而不是innerHTML之中。

+0

'' ...? – davin 2011-05-24 21:47:38

+0

在標記中混合javascript邏輯是不好的做法,應該避免 – XGreen 2011-05-24 21:53:59

+0

@XGreen一般來說,我同意你的看法。不過,我堅信,將JavaScript事件添加到標記中的元素是可以的。這使得事件處理程序在查看HTML時很清晰,並且如果它們被正確命名,也可以在JavaScript文件中進行命名。如果我正在做更復雜的事情,我會在JavaScript文件中創建一個onchange函數並引用它。但是,我認爲在這種情況下增加了不必要的複雜性,並使輸入之間的聯繫更加模糊。 – Briguy37 2011-05-25 13:31:17

1

可以在數據功能保存對元素:

function getFileNameFromPath(path) { 
     var ary = path.split("\\"); 
     return ary[ary.length - 1]; 
    } 

    $(function() { 

     $('input[type=file]').change(function() { 
      $(this).data(
       'fileName', 
       getFileNameFromPath($(this).val()) 
       ); 

      alert($(this).data('fileName')); 
     }); 

    });