我之前没有使用过复选框,需要一些帮助。我有一个经典的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表之前执行此操作。
答案 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
将包含true
或false
。
显然你可以扩展它来重新加载所有personId
并循环遍历它们以拉出不同的复选框值。
<强> - 编辑 - 强>
name
和id
属性确实需要一个前缀来明确其意图(如果您只是分配记录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