2013-01-18 131 views
5

我有一個複選框複選框布爾值經典ASP

<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

回答

7

複選框僅打勾時傳遞值。你需要服務器端的邏輯來適應這一點。

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

創建名爲「chkNGI」的隱藏輸入。 將當前的複選框重命名爲不同的東西。 爲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()"> 
+0

你能告訴我一個例子嗎? –

+0

您只需將thml標籤放置在正確的位置,並在文件開頭處放置javascript部分。 ' PS: – GeorgeVremescu

+0

PS。也許'checked'是JavaScript的保留字。而不是'var checked'確定使用'var checkedState'。 – 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

我不認爲這是傳統ASP最乾淨的解決方案。 – JGallardo

1

你可以試試這個單行解決方案

信息:RS = Recordset對象

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

我試過這個,但是當控件未被選中時,複選框的值爲null。 –

0

你在帖子的頁面保存液;

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

我知道這個問題是舊的,但我最近不得不重構爲在傳統的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>