我正在尝试为当地公司制作一份申请表(毕业所需的项目)。
这是我遇到麻烦的页面的一部分:
<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 date
和to date
表格行中插入日,月,年:例如:Birth
在脚本中,我声明了变量fromdate2
和todate2
,它们应该包含日期,例如:“03/12/2015”
在case 30
的精选案例中,datediff
函数会给我fromdate2
todate2
之间的天数,如果它小于45,则会显示一个消息框出现(是的,我知道它只适用于IE)说日子超出限制
问题当我测试它并点击submit
没有任何反应
我很确定错误出现在fromdate2
todate2
个变量中
帮助我,并提前感谢你
答案 0 :(得分:2)
我对你如何收集表单数据感到困惑。除非我遗漏了某些东西,否则你似乎在混合服务器端和客户端代码。
Classic ASP是服务器端技术,VBScript是它通常使用的语言,(如果愿意,可以指定JavaScript。)
您的子程序包含在<SCRIPT LANGUAGE="VBSCRIPT">
中。这意味着它将在客户端运行 - 并且您知道它只适用于IE
我认为您需要做的是先将代码移到服务器端。您可以将其放在<% %>
分隔符内,或使用<SCRIPT LANGUAGE="VBSCRIPT" runat="server">
使用请求对象填充从表单字段中检索的变量,而不是onclick事件,例如cboFromDateDay = Request.Form("cboFromDateDay")
最后,您的vbs脚本似乎旨在生成弹出警报。这不适用于服务器端代码。您可以使用Response.Write
在页面文本中显示错误消息。
如果您迫切需要弹出警报,那么您可以在页面加载时触发它们,并将触发它们的代码放在asp条件语句中,这样只有在满足某些条件时才会出现在服务器输出中。我建议虽然这比它的价值更麻烦