【发布时间】:2014-09-16 19:30:52
【问题描述】:
我的 vbscript 代码遇到问题。我的 HTML 代码如下所示
<input type='checkbox' name='DisplayRow' id='DisplayRow1' />
<input type='checkbox' name='DisplayRow' id='DisplayRow2' />
<input type='checkbox' name='DisplayRow' id='DisplayRow3' />
这样做是因为上面还有另一个复选框调用了一个 JavaScript 函数,该函数将选中或取消选中所有“DisplayRow”复选框。 javascript 函数使用 getElementsByName 返回所有名为“DisplayRow”的复选框。
当单击表单的提交按钮时,操作会将其发送到一个 ASP 页面(经典 ASP),该页面使用 Request.Form 命令获取调用表单上的所有对象。 Request.Form 命令查看的是“name”属性,而不是对象的“id”属性。
这似乎适用于所有其他表单对象。当它到达复选框时,因为“名称”属性对所有复选框使用相同的名称,它返回一个数组。可以像这样访问各个复选框:
Request.Form("DisplayRow")(x)
其中 x 引用数组中的单个复选框。
如果选中复选框,我可以毫无问题地遍历数组。如果未选中一个或多个或所有复选框,则当代码引用数组中未选中的第一个复选框时,页面崩溃。 Request.Form 命令失败后不执行任何操作。
我已尝试将 Request.Form("DisplayRow")(x) 包含在 If 语句中的 IsNull 函数中,但它仍然使程序停止运行。
有没有其他人遇到过这个问题并找到了解决方法?
编辑
由于某种原因,stackoverflow 不允许我添加多个评论。
@科里。感谢您的信息
@jwatts1980。计数有效,但它不会让我知道选中了哪些复选框。如果计数大于 0,我可以遍历它们,但如果未选中第一个,我就会回到我从崩溃页面开始的地方。
【问题讨论】:
-
这是一个预期的行为:未选中的复选框值在 POST 操作期间不会提交给服务器。
-
我认为您可以使用
If Request("FieldName").Count > 0 Then来检查是否存在任何值。 -
请勿通过编辑回复 cmets。请添加您自己的 cmets 进行回复。
-
@ShadowWizard。今天 Stackoverflow 网站让我通过 cmets 回复。昨天每次我点击“添加评论”链接时,我都会被带到页面顶部。当我向下滚动时,没有编辑框。我无法在这里添加评论。这就是为什么我将我的 cmets 放在原始问题的末尾。
-
这意味着客户端错误,首先清除浏览器的缓存,然后尝试不同的浏览器。 (如果再次发生)
标签: html checkbox vbscript asp-classic