2013-01-18 15 views
5

Mam pole wyboruCheckbox wartość logiczna klasycznym ASP

<input type="checkbox" name="chkNGI" id="prod_ngi_sn" value="1"> 

Gdy jest sprawdzana mijam wartość 1, ale gdy nie jest zaznaczona każda wartość jest przekazywana. muszę przekazać wartość 0.

Próbowałem

<input type="checkbox" name="chkNGI" id="prod_ngi_sn" <%if prod_ngi_sn.checked then value="1" else value="0" end if%>> 

ale nie działa.

TKS

Odpowiedz

7

Pola wyboru tylko przekazywania wartości, gdy zaznaczone. Aby to zrobić, potrzebujesz logiki po stronie serwera.

Dim chkNGI 
chkNGI = Request("chkNGI") & "" 
If chkNGI = "" Then 
    chkNGI = "0" 
End If 
1

Tworzenie ukryte wejście o nazwie "chkNGI". Zmień nazwę bieżącego pola wyboru na coś innego. Dodaj do przetworzenia dla onClick na polu wyboru i używając małej funkcji javascript, w zależności od stanu pola wyboru, wpisz 0 lub 1 w ukrytym wprowadzeniu.

Przykładowo

<script> 
    function calcParam() { 
     var checked = document.getElementById("prod_ngi_sn").checked; 
     if (checked) 
      document.getElementById("hiddenNGI").value = "1"; 
     else 
      document.getElementById("hiddenNGI").value = "0"; 
    } 
</script> 

<input type="hidden" name="chkNGI" id="hiddenNGI"> 
<input type="checkbox" name="checkNGI" id="prod_ngi_sn" onClick="calcParam()"> 
+0

Czy możesz pokazać mi przykład? –

+0

Trzeba tylko umieścić znaczniki thml we właściwym miejscu i sekcję javascript na początku pliku. ' ' – GeorgeVremescu

+0

PS. Może 'checked' jest zarezerwowanym słowem dla JavaScript. Zamiast "var checked" użyj 'var checkState', aby się upewnić. – GeorgeVremescu

2
<script> 
function calcParam() { 
    var checked = document.getElementById("prod_ngi_sn").checked; 
    if (checked) 
    document.getElementById("hiddenNGI").value = "1"; 
    else 
    document.getElementById("hiddenNGI").value = "0"; } 
</script> 

<input type="hidden" name="chkNGI" id="hiddenNGI"> 
<input type="checkbox" name="checkNGI" id="prod_ngi_sn" onClick="calcParam()"> 
+1

Nie sądzę, że jest to najczystsze rozwiązanie dla klasycznej ASP. – JGallardo

1

Można spróbować tego jednego rozwiązania linii

Informacja: RS = Recordset obiekt

<input type="checkbox" <%If RS("ColumnName")=True Then Response.Write(" checked='checked' ")%> name="tableColumn" value="1" > 
+0

Próbowałem tego, ale wartość pola wyboru jest zerowa, gdy kontrola nie jest zaznaczone. –

0

Twoje rozwiązanie w poście do zapisywania strony;

save.asp

<% 
' connection string bla bla 
' RS = Recordset Object 

If Request.Form("tableColumn")=1 Then 
    RS("ColumnName") = 1 
Else 
    RS("ColumnName") = 0 
End If 

' other columns saving process bla bla bla 
%> 
1

Wiem, że to pytanie jest stary, ale ja niedawno byłaby trochę starszych kod dla firmy w klasycznym ASP i pobiegł do tego problemu. Istniejący kod wykorzystał ukryte pole formularza o takiej samej nazwie jak pole wyboru i szukał w wynikach "false" lub "false, true". Czuł się kludgy, ale kod wykonywał także akcje oparte na dynamicznie nazwanych polach checkbox z prefiksami, więc wnioskowanie "false" z brakującego pola wprowadzałoby różne komplikacje.

Jeśli chcesz, aby pole wyboru powróciło "0" lub "1", ta technika powinna wystarczyć. Używa nienazwanego pola wyboru do manipulowania nazwanym ukrytym polem.

<html> 
<body> 
<% If isempty(Request("example")) Then %> 
<form> 
<input type="hidden" name="example" value="0"> 
<input type="checkbox" onclick="example.value=example.value=='1'?'0':'1'"> 
<input type="submit" value="Go"> 
</form> 
<% Else %> 
<p>example=<%=Request("example")%></p> 
<% End If %> 
</body> 
</html> 
Powiązane problemy