输入框名称:为什么用[]命名?

时间:2012-06-14 12:16:56

标签: html asp-classic

由于我仍在尝试解决我的其他问题(需要一些帮助here!),我正在探索如何命名相同但不同行的表单元素。

按照此示例here,该文章的作者将其文本框命名为“input_box_one”。他编写的jQuery函数也复制了输入框以具有相同的名称。我想知道命名这样的文本框的原因,以及他要编写的服务器脚本如何从类似名称的文本框中收集输入?

我将用Classic 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>

谢谢!

3 个答案:

答案 0 :(得分:6)

在ASP Classic中,Request.Form("someName")返回一个实现IStringList接口的对象。此界面有两个成员Item([i]]),它是默认属性Count

如果要发布到ASP,则应删除[]后缀。您可以使用其他索引器参数i访问使用相同名称的多个值。 E.g。

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

我不记得这个集合是基于0还是1,但是你应该很容易测试。该对象也可以支持For Each,但在您的方案中可能没有那么有用。

答案 1 :(得分:4)

[]是一种PHP主义。它使PHP表单解析器将$_POST['fieldname']$_GET['fieldname']中的数据表示为数组。

PHP是我所知道的唯一语言,标准HTML表单数据解析器需要数据中的特殊名称才能在标量和数组模式之间切换。

答案 2 :(得分:0)

具有相同名称的多个输入字段将在Classic ASP的输入name属性下显示为逗号分隔值。

所以,

<input type="text" name="input_box_one[]" value="foo" />
<input type="text" name="input_box_one[]" value="bar" />
在经典ASP中提交form

后,在request.form("input_box_one[]")

会给你:

"foo,bar"