**對於未來的讀者**jQuery自定義文件輸入插件 - 文件沒有上傳
雖然我接受了答案,但是這個問題對我來說並沒有解決。用戶dbf
顯然知道他的東西,也許他的答案會爲你工作。如果沒有,我很抱歉。水對我來說太深了,我沒有時間花費在這個上面,所以我重寫了我的代碼以刪除自定義文件輸入的細節。我會完成我的項目,然後,如果可能的話,返回到此代碼併發布我的解決方案。然而,在一天結束時,用戶dbf
付出了很大的努力,值得信賴。
ajax調用返回一個表格結構,它放在表格標籤中。
ADD ROW按鈕克隆一個表格行,並帶有用於上傳文件的鏈接(定製文件輸入作爲定位標記)。
我用jquery-custom-file-input.js插件從here替換INPUT TYPE = FILE元素。這個jquery插件允許將任何元素轉換爲文件輸入元素,所以我使用一個錨定標記#change_pd
作爲文件輸入元素。但是爲了實際上傳文件,最簡單的文檔說「將輸入元素附加到表單元素」。
This StackOverflow question正好解決了這個問題,但我一直無法使它在我的情況下工作。
一個標準的提交按鈕提交表單,除了上傳的文件以外都收到了一切。
HTML - 一個Ajax生成的表插入DIV #reportstable
<form action="" method="post" name="upd" enctype="multipart/form-data" id="AFrm">
<div id="reportstable">
</div>
</form>
AJAX內 - 返回的表看起來是這樣的。該表放置在上面的div #reportstable中。
<table id="DocTable">
<tr>
<td>New Document</td>
<td>
<span id="span_pd"></span>
<input type="hidden" id="proj_id" name="proj_id" value="'.$project_id.'">
<input type="hidden" id="status_pd" name="status_pd">
</td>
<td>
<a id="change_pd" href="#">change</a>
<input type="hidden" id="new_pd" name="new_pd">
</td>
</tr>
</table>
JQUERY - 這是插入一個文件的代碼。它確實將所選文件名作爲文本放入SPAN中,並放入$ POST數據中收到的隱藏輸入文件#new_pd中。
但是,文件本身沒有上傳。
我不知道在哪裏放.appendTo(),或如何寫jQuery。這是我試過的。除了.appendTo()之外,所有東西都可以工作。
$(document).on('click','#change_pd',function() {
$(this).file().choose(function(e, input) {
$('#new_pd').val(input.val());
$('#span_pd').html(input.val());
$('#span_pd').css('color','grey');
$('#status_pd').val('CHANGED');
});
$(this).css('text-transform','uppercase');
$(input).appendTo('#AFrm').
attr('name', 'a-name').
attr('id', 'an-id');
});
PS - 如果任何人都可以推薦一個更好的(?首選)定製文件輸入插件,我所有的耳朵。
我明白你的意思給出一個選項的具體形式,排序的。你的回答有點凌駕於我的頭上。我相信你會指出問題所在,但我需要一些幫助來解決問題。我應該修改插件代碼,還是可以修改我自己的jQuery代碼? – gibberish
我仍然試圖瞭解我應該如何解決這個問題。問題:由於DOM中只有一種形式,爲什麼我需要指定表單ID?不挑剔,只是想明白。 – gibberish
你能更具體地回答你的第二部分嗎?你能把這段代碼片段放在上下文中嗎? – gibberish