Classic-ASP形式的可变输入字段数

时间:2010-05-15 06:59:48

标签: asp-classic

我有一个结帐表格,产品数量可以是“n”。那么我怎么知道表格中有多少输入字段并从中获取输入呢?

由于

1 个答案:

答案 0 :(得分:10)

如果它是一组单个控件 - 比如代表项目的可变数量的复选框 - 解决方案非常简单。对于您的复选框:

<input type="checkbox" name="ProductID" value="1" />Product #1<br />
<input type="checkbox" name="ProductID" value="2" />Product #2<br />
<input type="checkbox" name="ProductID" value="3" />Product #3

然后在你的ASP中,你可以这样做:

<%
  Dim intID

  For Each intID In Request.Form("ProductID")
    ' intID now represents a selected product ID.  Insert into DB
    ' or whatever your process is.  Note that only the "checked" values
    ' will be passed to the server.
  Next
%>

实际上,这种方法适用于任意数量的同名控件。如果它是1-n个名称为“FavoriteColor”的文本框,则可以{相同方式For Each遍历每个值。没有用户输入的文本框将不会被传递。

现在,如果您的结帐表单包含每个项目的一组输入控件,您可以通过仔细命名其他控件来构建该方法:

<div>
<input type="checkbox" name="ProductID" value="1" />Product #1<br />
<input type="textbox" name="Product1_Quantity">
<input type="textbox" name="Product1_Color">
</div>

<div>
<input type="checkbox" name="ProductID" value="2" />Product #2<br />
<input type="textbox" name="Product2_Quantity">
<input type="textbox" name="Product2_Color">
</div>

<div>
<input type="checkbox" name="ProductID" value="3" />Product #3
<input type="textbox" name="Product3_Quantity">
<input type="textbox" name="Product3_Color">
</div>

现在,再次,在服务器上,您可以用这种方式解析数据:

<%
  Dim intID
  Dim intQuantity
  Dim strColor

  For Each intID In Request.Form("ProductID")
    ' this is a selected item
    intQuantity = Request.Form("Product" & intID & "_Quantity")
    strColor = Request.Form("Product" & intID & "_Color")
  Next
%>

您将能够以这种方式对每组选定项目执行验证和其他逻辑。