2012-06-14 20 views
4

由於我仍然試圖解決我的其他問題(需要一些幫助here!),我正在探索如何命名錶單元素是相同的,但在不同的行上。輸入框名稱:爲什麼用[]命名?

以下示例here,文章的作者將其文本框命名爲「input_box_one」。他編寫的jQuery函數也複製輸入框以具有相同的名稱。我想知道如何命名他的文本框的原因,以及他將要編寫的服務器腳本如何從類似命名的文本框收集輸入內容?

我將在經典ASP中撰寫。

<table id = "options-table">      
    <tr> 
     <td>Input-Box-One</td> 
     <td>Input-Box-Two</td> 
     <td>&nbsp;</td> 
    </tr> 

    <tr> 
     <td><input type = "text" name = "input_box_one[]" /></td> 
     <td><input type = "text" name = "input_box_two[]" /></td> 
     <td><input type = "button" class = "del" value = "Delete" /></td> 
    </tr>     

    <tr> 
     <td><input type = "text" name = "input_box_one[]" /></td> 
     <td><input type = "text" name = "input_box_two[]" /></td> 
     <td><input type = "button" class = "add" value = "Add More" /></td> 
    </tr> 
</table> 

謝謝!

回答

6

在ASP經典的Request.Form("someName")返回一個對象,實現了IStringList接口。該界面有兩個成員Item([i]]),這是默認屬性,Count

如果發佈到ASP,您應該刪除[]後綴。您可以使用附加索引器參數i訪問多個使用相同名稱的值。例如。

Dim someValue : someValue = Request.Form("someName")(2) 

我不記得這個集合是基於0還是1,但應該很容易測試。該對象也可能支持For Each,但這可能對您的方案沒有用處。

+0

感謝您的指點!我相信你正在與[this]類似的東西(http://www.w3schools.com/asp/showasp.asp?filename=demo_form2)? – kosherjellyfish

+0

@kosherjellyfish:是的,我正在描述ASP的內部工作原理,使得w3schools的例子有效。 – AnthonyWJones

+0

@kosher如果解決了您的問題,請將此答案標記爲接受,方法是在左側標記綠色的V圖標。 –

4

[]是一個PHPism。它會導致PHP表單解析器將$_POST['fieldname']$_GET['fieldname']中的數據表示爲數組。

PHP是我知道的唯一一種語言,其中標準HTML表單數據解析器需要數據中的特殊名稱才能在標量和數組模式之間切換。

+2

不知道多久我們可以保持一個「PHP是唯一的語言,我知道哪裏...」線程將... –

0

具有相同名稱的多個輸入字段將在經典ASP中的輸入name屬性下以逗號分隔值顯示。

所以,

<input type="text" name="input_box_one[]" value="foo" /> 
<input type="text" name="input_box_one[]" value="bar" /> 

form後,在傳統的ASP一個提交,request.form("input_box_one[]")

會給你:

"foo,bar"

+2

他們不會被提交這樣的,它是(大概)ASP如何對待他們。如果數據包含逗號,它會做什麼? (我認爲這可能實際上是一種更糟糕的方式來處理PHP所做的事情,我感到震驚)。 – Quentin

+1

我不好,你說得對。我記得當數據中有逗號時,ASP會自動吐出。所以你必須做一些客戶端驗證以避免逗號。之後,你希望好運! –

+0

Oooh好的,謝謝你們! – kosherjellyfish

相關問題