2010-02-11 3 views
2

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

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

+1

Являются ли они динамически создаются в браузере с помощью javascript? – Kev

+0

Связаны с использованием POST или вы можете переключиться на GET свою форму? Это единственное различие, которое я могу найти в проектах, было сделано (см. Мой ответ на ваш пост, касающийся динамических включений). – Filburt

+0

@kev - нет, они созданы на сервере @Filburt - Это не имеет никакого значения, если это GET или POST. Не из моих тестов в любом случае – chobo

ответ

0

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

1

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

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

+0

Это сработает, но я ненавижу javascript :) Я сосать его. В конце концов я использовал javascript-решение, чтобы вызвать щелчок на кнопке, поэтому я натыкаюсь на это. – chobo

+0

WOOHOO! <3 ударов – Aaron

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


%> 
+0

Должен ли быть создан тег формы в серверном коде для этого? У меня был жестко закодированный тег формы на странице и только что сгенерировал флажки, поэтому я не уверен, что это имеет значение. – chobo

+0

@chobo Я предполагаю, что это просто для обеспечения парадигмы, чтобы не смешивать HTML-код и код сценария. – Filburt

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

+1

Это позволило бы 1 для флажка со значением 11 проверено – feihtthief

+0

Действительно, действительно, есть 4GuysFromRolla с еще лучшим решением, чем Instr (...): http://www.4guysfromrolla.com/aspfaqs/ShowFAQ.asp?FAQID= 93 – Filburt

+0

Это то, что я изначально использовал, но мои флажки потеряли состояние обратной передачи, когда я нажал на нее. Странно, как это работает для некоторых, а не для других ... – chobo

Смежные вопросы