簡體   English   中英

引用表單元素數組(名稱=“ blah []”)

[英]Refering to arrays of form elements (name=“blah[]”)

我有一個包含3個文件上傳字段系列的表單,每個文件上傳字段都有一個相關的隱藏“ todo”字段。

文件上載字段開始顯示為灰色,用戶可以上載新文件,如果以前曾在該位置上載過文件,則可以刪除文件,也可以保持不變(即使用先前上載的文件或將其保留為空白)。

待辦事項字段應存儲將對每個文件執行的操作(即0 =上載新文件,1 =刪除現有文件,2 =保留不變)。

我在上傳字段旁邊有一系列按鈕。 一個用於“上傳新文件”(啟用文件上載字段,並將(應)將相關的待辦事項字段設置為0;一個用於刪除(禁用文件上載框);另一個用於“保留不變”(也禁用文件)上傳字段)。

當表單發布到PHP文檔時,我發現了用於創建數組的name =“ blah []”技術,該技術使循環瀏覽文件變得非常輕松。 麻煩的是,我需要在相關的“ todo”字段中編輯值,如果它們都被命名為“ todo []”,那么我就不能具體引用它。

代碼是這樣的:

<input type="file" name="file[]" />
<input type="hidden" name="todo[]" />
<input type="button" onclick="enableFileField('file[]', 0)" value="Upload New" />
<input type="button" onclick="enableFileField('file[]', 1)" value="Remove Current" />
<input type="button" onclick="enableFileField('file[]', 2)" value="No Change" />

我敢肯定我會丟失一些東西,而這實際上很簡單...

除名稱外,還可以給字段id name將用於發布到服務器,但是id可用於引用JavaScript中的輸入:

<input type='hidden' id='todo_0' name='todo[]'>
<input type='hidden' id='todo_1' name='todo[]'>

在JavaScript中, document.getElementById("todo_0")將為您提供第一個todo字段。 確保將id保持足夠的不同,以使Internet Explorer不會混淆(它在idname周圍存在名稱空間錯誤[它傾向於- 完全不正確 -將它們放在相同的名稱空間中])。

隨着添加更多字段,您可以在javascript中增加一個計數器,因此可以創建todo [0],todo [1]等。這不會改變PHP的解釋方式。

編輯 :意識到您不會在javascript中即時創建字段,但命名仍然適用

您可以為每個待辦事項輸入提供一個您記得的唯一ID,或者,我相信您可以使用

<input type='hidden' name='todo[0]' />
<input type='hidden' name='todo[1]' />

等等。

如果我了解您的要求,那么您希望能夠具有多個用於上載文件的字段。 例如,如果您有3個文件要修改,那么您將有3個隱藏的待辦事項字段?

一種快速簡便的解決方案是為文件數量保留一個隱藏字段,例如:

<input type='hidden' name='numFiles' value='1' />

並在您使用javascript添加或刪除文件時進行更新。 然后像其他人所建議的那樣,給每個待辦事項一個唯一的ID,例如:

<input type='hidden' name='todo1' />

現在,您可以輕松找到一個待辦事項,因為每個文件都有一個唯一的待辦事項,您可以從那里對其進行更新。

發布表單后,您可以從numFiles字段中提取文件數,並循環瀏覽所有待辦事項,並在末尾附加一個數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM