Asp classic 复选框布尔值经典ASP

Asp classic 复选框布尔值经典ASP,asp-classic,Asp Classic,我有一个复选框 <input type="checkbox" name="chkNGI" id="prod_ngi_sn" value="1"> 选中时,我传递值1,但未选中时,传递任何值。 我必须传递值0 我试过了 <input type="checkbox" name="chkNGI" id="prod_ngi_sn" <%if prod_ngi_sn.checked then value="1" else value="0" end if%>>

我有一个复选框

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

选中时,我传递值1,但未选中时,传递任何值。 我必须传递值0

我试过了

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

但是没有起作用


tks创建一个名为“chkNGI”的隐藏输入。 将当前复选框重命名为其他名称。 在复选框上添加handled for onClick,并使用一个小javascript函数,根据复选框的状态,在隐藏的输入中写入0或1

例如,

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

函数calcParam(){
var checked=document.getElementById(“prod\u ngi\u sn”)。已选中;
如果(选中)
document.getElementById(“hiddengi”).value=“1”;
其他的
document.getElementById(“hiddengi”).value=“0”;
} 

复选框仅在勾选时传递值。您需要服务器端的逻辑来适应这一点。


函数calcParam(){
var checked=document.getElementById(“prod\u ngi\u sn”)。已选中;
如果(选中)
document.getElementById(“hiddengi”).value=“1”;
其他的
document.getElementById(“hiddengi”).value=“0”;}

您可以尝试这种单线解决方案

信息:RS=记录集对象

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

将您的解决方案发布到保存页面

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

我知道这个问题很老了,但我最近不得不在经典ASP中为一家公司重构一些遗留代码,并遇到了这个问题。现有代码使用与复选框同名的隐藏表单字段,并在结果中查找“false”或“false,true”。它感觉很笨拙,但代码也基于带有前缀的动态命名复选框字段执行操作,因此从缺少的字段推断“false”会带来不同的复杂性

如果希望复选框返回“0”或“1”,则此技术应该可以实现此目的。它使用未命名的复选框来操作命名的隐藏字段

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

范例=


只需将thml标记放在正确的位置,并将javascript部分放在文件的开头即可<代码>函数calcParam(){var checked=document.getElementById(“prod_ngi_sn”).checked;if(checked)document.getElementById(“hiddengi”).value=“1”;else document.getElementById(“hiddengi”).value=“0”}
PS。可能
checked
是JavaScript的保留字。不要使用
var checked
而是使用
var checkedState
。不要在评论中写代码块,请将此添加到您的帖子中。您可以删除此答案还是其他答案?它们是相同的,只是这一个添加了一些额外的解释。我尝试了这个,但是当控件未选中时,复选框的值是空的。我认为这不是经典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
%>
<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>