Динамические флажки в ASP - PullRequest
       13

Динамические флажки в ASP

2 голосов
/ 11 февраля 2010

Как я могу получить значения из динамически созданной группы флажков, используя asp classic? Кажется, что когда я выбираю свои чекбоксы и нажимаю «Отправить», при первом щелчке не передаются значения, но когда я нажимаю на них снова, они появляются.

Как я могу это исправить без жесткого кодирования флажков в форме?

Ответы [ 4 ]

1 голос
/ 11 февраля 2010

Один из способов сделать это - содержать разделенный запятыми список идентификаторов флажков, и каждый раз, когда флажок нажимался, добавлять идентификатор в список с помощью JavaScript. Когда страница отправляется, я добавляю этот список в качестве переменной запроса. Загружая страницу, я определяю, присутствует ли этот идентификатор флажка в списке, и если это так, я устанавливаю для его проверенного атрибута значение true.

Я делал это вечно, поэтому, пожалуйста, извините, если не ясно.

0 голосов
/ 12 февраля 2010

У меня был другой элемент управления на странице (выпадающий список), и я прикрепил к нему событие onchange. Событие onchange вызовет нажатие кнопки для отправки формы. Это имитировало первый клик. По какой-то причине для связывания формы со значениями флажков потребовалось два щелчка, поэтому onchange имитировал первый щелчок, а обычная кнопка - второй.

0 голосов
/ 12 февраля 2010

Поскольку я предполагаю, что вы хотели бы поддерживать состояние флажка во время обратной передачи, я добавляю свою версию динамического кода, генерирующего флажок:

<%
    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 () работало лучше, чем другие методы - в любом случае лучше, чем зацикливание массива.

0 голосов
/ 12 февраля 2010

Вот, пожалуйста,

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


%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...