填写计数字段

时间:2012-03-31 02:02:04

标签: asp-classic

我的问题的快速摘要:我想显示用户填写的字段数。

我是学习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>

2 个答案:

答案 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将值转换为数字以进行适当的比较。