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