声明变量的问题

时间:2015-12-25 09:36:42

标签: vbscript asp-classic

我正在尝试为当地公司制作一份申请表(毕业所需的项目)。

这是我遇到麻烦的页面的一部分:

<FORM METHOD="POST"  ACTION="InsertPetition.asp?EmpID=<%=Request.QueryString("EmpID")%>&BRANCH=<%=Session("BRANCH")%>" name=frmNewClaim>
<table>
<tr>                        
<td>From Date</td>
<td><SELECT name=cboFromDateDay>
<%For i = 1 To 31%>
<%if i=day(date()) then%>
<OPTION VALUE="<%=i%>" Selected="True"><%=i%></OPTION>
<%else%>
<OPTION VALUE="<%=i%>"><%=i%></OPTION>
<%end if%>
<%Next%>
</SELECT>

<SELECT name=cboFromDateMonth>
<%For i = 1 To 12%>
<%if i=month(date()) then%>
<OPTION VALUE="<%=i%>" Selected="True"><%=MonthName(i)%></OPTION>
<%else%>
<OPTION VALUE="<%=i%>"><%=MonthName(i)%></OPTION>
<%end if%>
<%Next%>
</SELECT>

<SELECT name=cboFromDateYear>
<%For i = Year(Date())-1 To Year(Date()) + 10%>
<%if i=year(date()) then%>
<OPTION VALUE="<%=i%>" Selected="True"><%=i%></OPTION>
<%else%>
<OPTION VALUE="<%=i%>"><%=i%></OPTION>
<%end if%>
<%Next%>
</SELECT>
</td>   
<td><INPUT type="button" value="Submit" name=cmdSubmit></td>


</tr>
</table>

<SCRIPT LANGUAGE="VBSCRIPT">

Sub cmdClose_OnClick()
    window.close
End Sub

Sub cmdSubmit_OnClick()
    Dim fromdate2
    Dim todate2
    fromdate2="Trim(frmNewClaim.cboFromDateDay.Value) & "/" & Trim(frmNewClaim.cboFromDateMonth.Value) & "/" & Trim(frmNewClaim.cboFromDateYear.Value)" 
    todate2="Trim(frmNewClaim.cboToDateDay.Value) & "/" & Trim(frmNewClaim.cboToDateMonth.Value) & "/" & Trim(frmNewClaim.cboToDateYear.Value)"

    Select case frmNewClaim.txtPTNGroup.Value
        'If type is Birth
        case 30
               if DateDiff("d",fromdate2,todate2) > 45 then
               msgbox "Days value exceeded the limit of days allowed!",16,"Data Entry Error"
               frmNewClaim.txtPTNGroup.focus
               Exit Sub
               end if
case else 
        End Select
frmNewClaim.submit

    End Sub

在此表单中,用户需要在选择请愿类型后在from dateto date表格行中插入日,月,年:例如:Birth 在脚本中,我声明了变量fromdate2todate2,它们应该包含日期,例如:“03/12/2015” 在case 30的精选案例中,datediff函数会给我fromdate2 todate2之间的天数,如果它小于45,则会显示一个消息框出现(是的,我知道它只适用于IE)说日子超出限制

问题当我测试它并点击submit没有任何反应 我很确定错误出现在fromdate2 todate2个变量中 帮助我,并提前感谢你

1 个答案:

答案 0 :(得分:2)

我对你如何收集表单数据感到困惑。除非我遗漏了某些东西,否则你似乎在混合服务器端和客户端代码。

Classic ASP是服务器端技术,VBScript是它通常使用的语言,(如果愿意,可以指定JavaScript。)

您的子程序包含在<SCRIPT LANGUAGE="VBSCRIPT">中。这意味着它将在客户端运行 - 并且您知道它只适用于IE

我认为您需要做的是先将代码移到服务器端。您可以将其放在<% %>分隔符内,或使用<SCRIPT LANGUAGE="VBSCRIPT" runat="server">

来执行此操作

使用请求对象填充从表单字段中检索的变量,而不是onclick事件,例如cboFromDateDay = Request.Form("cboFromDateDay")

最后,您的vbs脚本似乎旨在生成弹出警报。这不适用于服务器端代码。您可以使用Response.Write在页面文本中显示错误消息。

如果您迫切需要弹出警报,那么您可以在页面加载时触发它们,并将触发它们的代码放在asp条件语句中,这样只有在满足某些条件时才会出现在服务器输出中。我建议虽然这比它的价值更麻烦