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>