Asp classic asp中的动态复选框

Asp classic asp中的动态复选框,asp-classic,Asp Classic,如何使用asp classic从动态创建的复选框组中获取值?似乎当我选中复选框并点击submit时,在第一次单击时没有传递任何值,但当我再次单击时,它们会出现 如何在不硬编码表单上的复选框的情况下解决此问题?我这样做的一种方法是包含一个以逗号分隔的复选框ID列表,每次单击复选框时,通过javascript将ID添加到列表中。当页面提交时,我将该列表添加为请求变量。加载页面时,我确定该复选框ID是否已在列表中,如果已在列表中,则将其checked属性设置为true 我很久以前就这样做了,如果不清楚

如何使用asp classic从动态创建的复选框组中获取值?似乎当我选中复选框并点击submit时,在第一次单击时没有传递任何值,但当我再次单击时,它们会出现


如何在不硬编码表单上的复选框的情况下解决此问题?

我这样做的一种方法是包含一个以逗号分隔的复选框ID列表,每次单击复选框时,通过javascript将ID添加到列表中。当页面提交时,我将该列表添加为请求变量。加载页面时,我确定该复选框ID是否已在列表中,如果已在列表中,则将其checked属性设置为true

我很久以前就这样做了,如果不清楚,请原谅。

给你

<% OPTION EXPLICIT %>
<% 

sub echo(X)
    response.write x
end sub

echo "<form method='post'>"
dim i
for i = 1 to 5
    echo "<input type='checkbox' name='checkboxes' value=" & i & " />" & i & "<br />"
next
echo  "<input type='submit' value='Show me the checkboxes'>"
echo "</form>"

echo "<br />Selected items: " & request("checkboxes")


%>

由于我假设您希望在回发期间保持复选框状态,因此我正在添加我的动态复选框生成代码版本:

<%
    Dim checkboxes
    Dim i
    checkboxes = Array(1, 2, 3, 4)

    For i = 1 To (UBound(checkboxes) + 1)
        Response.Write "<input type=""checkbox"" name=""checkGroup"" value=""" & i & """"

        If (UBound(Filter(Request.Form("checkGroup"), i, True, 1)) > -1) Then
            Response.Write " checked"
        End If

        Response.Write " />"
    Next
%>
-1)然后
回答。写“选中”
如果结束
响应。写入“/>”
下一个
%>

第二种方法是

<%
    Dim checkboxes
    Dim boxeschecked
    Dim i
    checkboxes = Array(1, 2, 3, 4)
    boxeschecked = "," & Join(Request.Form("checkGroup"), ",") & ","

    For i = 1 To (UBound(checkboxes) + 1)
        Response.Write "<input type=""checkbox"" name=""checkGroup"" value=""" & i & """"

        If Instr(boxeschecked, ("," & i & ",")) > 0 Then
            Response.Write " checked"
        End If

        Response.Write " />"
    Next
%>
0那么
回答。写“选中”
如果结束
响应。写入“/>”
下一个
%>

我记得,使用Instr()确实比其他方法执行得更好——在任何情况下都比在数组上循环要好。

我在页面上有另一个控件(下拉框),并在其上粘贴了一个onchange事件。onchange事件将触发表单提交按钮的按钮单击。这模拟了第一次点击。出于某种原因,需要两次单击才能将表单与复选框值绑定,因此onchange模拟了第一次单击,而常规按钮是第二次单击。

这些是使用javascript在浏览器中动态创建的吗?是绑定到使用POST还是可以切换到获取表单?这是我所能发现的唯一不同之处,即项目是did(请参阅我对您关于动态包含的帖子的回答)。@kev-不,它们是在服务器端@Filburt创建的-如果是GET或post,则没有任何区别。无论如何,我的测试都不会为值为11 checkedTrue的复选框启用1。很好,Rolla提供了比Instr更好的解决方案(…):这是我最初使用的,但当我单击复选框时,我的复选框失去了回发状态。奇怪的是,这对某些人有效,而对其他人无效……这会有效,但我讨厌javascript:)我很烂。我最终确实使用了javascript解决方案来触发按钮点击,所以我把它升级了?我在页面上硬编码了表单标记,并生成了复选框,所以我不确定这是否有区别。@chobo我想这只是为了强制执行范例,而不是混合html和脚本代码。