asp中的动态复选框

时间:2010-02-11 19:24:48

标签: asp-classic

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

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

4 个答案:

答案 0 :(得分:1)

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

我之前做过这个,所以如果不清楚,请原谅我。

答案 1 :(得分:0)

你去吧

<% 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")


%>

答案 2 :(得分:0)

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

<%
    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
%>

第二种方法是

<%
    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
%>

我记得使用Instr()确实比其他方法表现更好 - 比在任何情况下循环遍历数组更好。

答案 3 :(得分:0)

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