我有一个结帐表格,产品数量可以是“n”。那么我怎么知道表格中有多少输入字段并从中获取输入呢?
由于
答案 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
%>
您将能够以这种方式对每组选定项目执行验证和其他逻辑。