2013-01-18 6 views
5

Ich habe eine CheckboxCheckbox boolean Wert klassischer ASP

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

Wenn geprüft wird, ich den Wert 1 passieren, aber wenn es nicht Wert übergeben wird, überprüft wird. Ich habe den Wert zu übergeben 0

I

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

aber funktionierte nicht ausprobiert habe.

tks

Antwort

7

Ankreuzfelder nur Werte übergeben, wenn aktiviert. Sie brauchen Logik auf der Serverseite, um das zu berücksichtigen.

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

erstellen versteckten Eingang mit dem Namen "chkNGI". Benennen Sie Ihr aktuelles Kontrollkästchen in etwas anderes um. Hinzufügen behandelt für onClick auf das Kontrollkästchen und mit einer kleinen JavaScript-Funktion, je nach Status des Kontrollkästchens, schreiben Sie 0 oder 1 in den versteckten Eingabe.

Als Beispiel

<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

Können Sie mir ein Beispiel zeigen? –

+0

Sie müssen nur die Thml-Tags an der richtigen Stelle und den Javascript-Abschnitt am Anfang der Datei platzieren. ' ' – GeorgeVremescu

+0

PS. Vielleicht ist "checked" ein reserviertes Wort für JavaScript. Verwenden Sie anstelle von 'var checked' 'var checkedState', um sicher zu sein. – 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

Ich glaube nicht, dass dies die sauberste Lösung für klassisches ASP ist. – JGallardo

1

können Sie versuchen, diese einzige Linie Lösung

Information: RS = Cord-Objekt

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

Ich habe das versucht, aber der Wert des Kontrollkästchens ist null, wenn das Steuerelement nicht überprüft wird. –

0

Ihre Lösung in der Post auf Seite Einsparung;

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

Ich weiß, diese Frage ist alt, aber ich hatte vor kurzem einige Legacy-Code für ein Unternehmen in der klassischen ASP-Refactoring und lief in dieses Problem. Der vorhandene Code verwendete ein ausgeblendetes Formularfeld mit demselben Namen wie das Kontrollkästchen und suchte in den Ergebnissen nach "false" oder "false, true". Es fühlte sich klugig an, aber der Code führte auch Aktionen aus, die auf dynamisch benannten Kontrollkästchenfeldern mit Präfixen beruhten, so dass die Ableitung von "falsch" aus einem fehlenden Feld zu unterschiedlichen Komplikationen führen würde.

Wenn Sie möchten, dass ein Kontrollkästchen entweder "0" oder "1" zurückgibt, sollte diese Technik den Trick erfüllen. Es verwendet ein unbenanntes Kontrollkästchen, um ein benanntes verstecktes Feld zu manipulieren.

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