我的问题的快速摘要:我想显示用户填写的字段数。
我是学习ASP的新手,我看起来并没有找到解决方案。我生成了一个简单的示例页面,与我需要的帮助相比很简单,但同样的想法。
当用户进入第一页时,他显然有三个文本框。 当他提交表格时,会向他显示他提交的信息,填写的字段数量。我正在尝试遍历每个字段,如果数字大于0,则将一个添加到名为tt的计数器。
Pass 2显示了循环,而不是给我tt的值。我尝试使用response.write来放置循环,但这不起作用。
<html>
<body>
<%
sub pass1
%>
Pass 1 <P>
<form action="count_p.asp" method = "post">
<input type="text" name="t1"><BR>
<input type="text" name="t2" ><BR>
<input type="text" name="t3"><BR>
<input type="hidden" name="token" value="2">
<input type="submit" value="submit query">
<%
end sub
sub pass2
response.write "<P>Pass 2 tokenvalue="+cstr(tokenvalue)
t1=request.form("t1")
t2=request.form("t2")
t3=request.form("t3")
response.write "<P>t4=" + t1
response.write "<P>t4=" +t2
response.write "<P>t4=" +t3
%>
tt=0
for i=1 to 3
if t + cstr(i) > 0 then
tt=tt+1
end if
then
response.write "<P>Fields filled = " + tt
<%
end sub
tokenvalue=request.form("token")
select case tokenvalue
case ""
call pass1
case "2"
call pass2
case "3"
call pass3
end select
%>
</body>
</head>
答案 0 :(得分:0)
您无法使用动态变量名称。它们不受支持。试试这个:
'Here we are splitting all the form values
'into an array. Your values will come in
'looking something like this:
'
' t1=4&t2=323&t3=3
'
'after we split them, you'll have 3 sets
'of values that look like:
'
' aFormNamesAndValues(0) = "t1=4"
' aFormNamesAndValues(1) = "t2=323"
' aFormNamesAndValues(2) = "t3=3"
aFormNamesAndValues = Split(Request.Form,"&")
tt=0
for i=0 to 2
'Ok, splitting once again, this time on the
'equals character. Now we will have an array
'with 2 values, the name of the form field
'and the value it holds, we can check each
'value and perform some logic on it:
aNameAndAValue = Split(aFormNamesAndValues(i),"=")
if aNameAndAValue(0) = "t" & (i+1) then
if aNameAndAValue(1) > 0 then
tt=tt+1
end if
end if
then
答案 1 :(得分:0)
你可以使用Eval
方法 - 通常它不赞成,但在这种情况下它是有效的用法:
tt=0
For i=1 to 3
curValue = Eval("t" & i)
If IsNumeric(curValue) Then
If CLng(curValue)>0 Then
tt = tt + 1
End If
End If
Next
正如您所看到的,您需要使用CLng将值转换为数字以进行适当的比较。