2012-06-14 23 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

相关问题