经典的asp复选框状态为复选框

时间:2014-09-16 21:32:55

标签: asp-classic

我之前没有使用过复选框,需要一些帮助。我有一个经典的asp / html页面。我的人数不详,每个人有3个复选框。用户需要根据页面上显示的信息检查某些框。我需要根据选中的复选框在同一页面上设置一些值。我已经尝试了几种方法,但没有任何运气。

有一个循环显示每个人的姓名和这三个复选框: <td align="center"><input type="checkbox" id="chkden" name="chkden" onclick="chkden();" value=<%=strempdental%>/></td> <td align="center"><input type="checkbox" id="chkort" name="chkort" onclick="chkort();" value=<%=strOrtPlan%>/></td>
<td align="center"><input type="checkbox" id="chkvis" name="chkvis" onclick="chkvis();" value=<%=strempvision%>/></td>

这是我在页面顶部的javascript。这两个选项都没有为Javascript工作。

function chkden()
{
streesubden.value = checkbox.checked ? strempdental.value : '';
}
function chkort()
{
  if(document.getElementById('chkort').checked)
        streesubort.value = strortplan :'';
}
function chkvis()
{
  if(document.getElementById('chkvis').checked)
        streesubvis.value = strempvision :'';
}

例如,如果选中“chkden”,那么我需要设置streesubden = strempdental。如果未选中,则streesubden将为空白。我需要在提交到SQL表之前执行此操作。

1 个答案:

答案 0 :(得分:0)

可能最简单的方法是使用经典ASP自动生成复选框,并使用数据项的ID作为它们之间的区别,如此......

<%
Dim data, row
Const C_COL_RECORD_ID = 0
Const C_COL_NAME = 1
data = GetDataSetAsArray() 'Just used as an arbitrary method for recovering the data.

For row = 0 to UBound(data, 2) 'Loop through the array rows.
    %>
    <input type="checkbox" id="chkYes<%=data(C_COL_RECORD_ID, row)%>" name="chkYes<%=data(C_COL_RECORD_ID, row)%>" />
    <input type="checkbox" id="chkNo<%=data(C_COL_RECORD_ID, row)%>" name="chkNo<%=data(C_COL_RECORD_ID, row)%>" />
    <input type="checkbox" id="chkMaybe<%=data(C_COL_RECORD_ID, row)%>" name="chkMaybe<%=data(C_COL_RECORD_ID, row)%>" />
    <label><%=data(C_COL_NAME, row)%> <!-- Write the name to the page --></label>
<%
Next 'row
%>

请注意,这是一种非常快速简便的方法。如果您需要从数据中获取更多信息,那么您必须对其进行排序。

当使用复选框时,它们将被命名并编号为该人的记录ID,如此...

  

chkYes1,chkNo1,chkMaybe1

     

chkYes2,chkNo2,chkMaybe2

     

...

     

chkYes [n],chkNo [n],chkMaybe [n]

显然这将取决于您的记录ID,因此它们可能不像我上面演示的那样连续。

- 编辑 -

实际上,这与我刚刚制作的一篇文章密切相关。 Take a look here并复制GetPostData()功能。拉回信息将是这样的:

Dim checkValue
checkValue = GetPostData("chkMaybe" & personId, "") <> ""

checkValue将包含truefalse

显然你可以扩展它来重新加载所有personId并循环遍历它们以拉出不同的复选框值。

<强> - 编辑 -

nameid属性确实需要一个前缀来明确其意图(如果您只是分配记录ID,那么每个控件都会有相同的ID视觉行)。其次,<%= %>用于(Response.)向页面写入值。因此,像:

<input type="text" id="txtName<%=data(C_COL_RECD_ID, row)%>" name="txtName<%=data(C_COL_RECD_ID, row)%>" />

合适 - 请注意txtName之前的<%=data(C_COL_RECD_ID, row)%>。同样,如果您指的是复选框,则可以使用以下内容:

<input type="checkbox" id="chkYes<%=data(C_COL_RECORD_ID, row)%>" name="chkYes<%=data(C_COL_RECORD_ID, row)%>" />

<强> PS: 如果有帮助,我发布了一段代码in another thread,它将从数据库读取数据,给定SQL和连接字符串,并返回数组中的数据。它还会陷阱并报告错误 - 可能有用。

使用它:

Dim sql, conn, data
sql = "SELECT * FROM myTable"
conn = "MyDbConnection;whatever"
Data = GetDataSet(sql, conn)

然后错误处理...

If Data(0, 0) = C_ERROR Then
    'Handle error...
    Response.Write(Data(C_COL_ERROR_ID, 0) & "<br />" & Data(C_COL_ERROR_MESSAGE, 0) & "<br />")
End If