2013-01-18 17 views
5

ho una casella di controlloCasella valore booleano Classic ASP

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

Quando è selezionata passo il valore 1, ma quando non è selezionata viene passato alcun valore. Devo passare il valore 0.

Ho provato

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

Ma non ha funzionato.

tks

risposta

7

Checkboxes passaggio solo valori Quando selezionato. Hai bisogno di logica sul lato server per adattarlo.

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

Creare un input nascosto con il nome "chkNGI". Rinomina la tua casella di controllo attuale con qualcosa di diverso. Aggiungi gestito per onClick sulla casella di controllo e utilizzando una piccola funzione javascript, a seconda dello stato della casella, scrivi 0 o 1 nell'input nascosto.

Come esempio,

<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

Puoi farmi un esempio? –

+0

Devi solo posizionare i tag thml nel posto giusto e la sezione javascript all'inizio del file. ' ' – GeorgeVremescu

+0

PS. Forse 'checked' è una parola riservata per JavaScript. Invece di 'var checked' usa' var checkedState' per essere sicuro. – 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

Non penso che questa sia la soluzione più pulita per ASP classico. – JGallardo

1

Si può provare questo un'unica soluzione linea

Informazioni: RS = Recordset oggetto

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

Ho provato questo, ma il valore della casella di controllo è nullo quando il controllo non è controllato. –

0

La vostra soluzione in post al risparmio pagina;

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

So che questa domanda è vecchio, ma di recente ho dovuto refactoring del codice legacy per una società in Classic ASP, e corse in questo problema. Il codice esistente utilizzava un campo modulo nascosto con lo stesso nome della casella di controllo e cercava "falso" o "falso, vero" nei risultati. Sembrava kludgy, ma il codice eseguiva anche azioni basate su campi di checkbox con nomi dinamici con prefissi, quindi dedurre "false" da un campo mancante avrebbe introdotto diverse complicazioni.

Se si desidera che una casella di controllo restituisca "0" o "1", questa tecnica dovrebbe fare il trucco. Usa una casella di controllo senza nome per manipolare un campo nascosto con nome.

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