是个调查里进行判断,调查有很多项目,每个项目里又用几个选项。JS用来判断各个项目的选择选项不能为空。下面是页面源码,在最底下已经有了一个在多选时判断选择数不能超过自定义的最大选择数!判断不能为空应该要在提交按钮上加个动作,请高手帮忙啊,小弟JS不熟啊!<%option explicit%>
<%response.expires = 0%>
<!--#include file="common/conn.asp"--><?xml version="1.0" encoding="gb2312"?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>投票</title></head><body><%'v1.1
'当参数 subjectID <= 0 时,取最新的一条投票记录
sub PrintSubject(conn, rs, ByVal subjectID)
    dim subjectExists 'subjectID 对应的投票主题(记录)是否存在
    subjectExists = false
    
    dim startTime, endTime, endTimeValid, securityRslt
    startTime = Date()
    endTime = CDate("1900-1-1")
    endTimeValid = false
    securityRslt = false
    
    dim sql
    if subjectID > 0 then
        sql = "select subjectID, subjectName, startTime, endTime, endTimeValid, securityRslt from subjects where subjectID=" & subjectID
    else
        sql = "select top 1 subjectID, subjectName, startTime, endTime, endTimeValid, securityRslt from subjects order by subjectID desc"
    end if
    rs.Open sql, conn, 1, 1
    if not rs.eof then
        subjectExists = true
        subjectID = rs("subjectID")
        startTime = rs("startTime")
        endTime = rs("endTime")
        endTimeValid = rs("endTimeValid")
        securityRslt = rs("securityRslt")
        response.Write("<input type=""hidden"" name=""subjectID"" value=""" & subjectID & """ />")
        if not endTimeValid then
            '无结束日期
            response.Write("<div class=""subject""><div>" & server.HTMLEncode(rs("subjectName")) & "</div>" & _
                           "<div class=""time"">投票日期:" & startTime & " 开始</div></div>" & vbcrlf)
        else
            response.Write("<div class=""subject""><div>" & server.HTMLEncode(rs("subjectName")) & "</div>" & _
                           "<div class=""time"">投票日期:" & startTime & " 至 " & endTime & "</div></div>" & vbcrlf)
        end if
    else
        subjectExists = false
        response.Write("参数 subjectID 对应的记录不存在。")
    end if
    rs.Close
    
    if subjectExists then
        '显示投票项目
        call PrintItems(conn, rs, subjectID)
        
        response.Write("<div class=""tool"">")
        if DateDiff("d", startTime, Date()) < 0 then
            'startTime 所指那天为投票开始的第一天
            response.Write("<input type=""submit"" value=""投票还没开始"" disabled=""disabled"" />")
        elseif endTimeValid and DateDiff("d", Date(), endTime) <= 0 then
            'endTime 所指那天为投票结束的第一天
            response.Write("<input type=""submit"" value=""投票已经结束"" disabled=""disabled"" />")
        else
            response.Write("<input type=""submit"" value="" 提 交 "" />" & vbcrlf)
        end if
        if not securityRslt then
            '结果不保密,显示查看结果的链接
            response.Write("<a href=""vote_rslt.asp?subjectID=" & subjectID & """ target=""_blank"">查看结果</a>")
        end if
        response.Write("</div>" & vbcrlf)
    end if
end sub'显示投票项目
'会自动显示或调用投票选项显示
sub PrintItems(conn, rs, subjectID)
    dim prevItemID, itemID, optionID
    prevItemID = 0
    itemID = 0
    optionID = 0
    
    dim validOptionsCnt
    validOptionsCnt = 0
    
    dim itemsCnt '如果主题的项目为1,那么则不显示项目的标题,使用主题名称即可
    itemsCnt = 0
    
    dim sql
    
    sql = "select Count(*) as itemsCnt from items where subjectID=" & subjectID
    rs.Open sql, conn, 1, 1
    itemsCnt = rs("itemsCnt")
    rs.Close
    
    sql = "select items.itemID, items.itemName, items.validOptionsCnt" & _
          ", options.optionID, options.optionText, options.optionValue from" & _
          " items left join options on items.itemID=options.itemID" & _
          " where items.subjectID=" & subjectID & _
          " order by items.priority desc, items.itemID, options.priority desc, options.optionID"
          
    rs.Open sql, conn, 1, 1
    do while not rs.eof
        itemID = rs("itemID")
        
        '显示项目
        '如果 itemID 等于 prevItemID,说明此 itemID 和前一记录的 itemID 相同,不必再次输出 item,只需要输出 option 即可
        if itemID <> prevItemID then
            validOptionsCnt = rs("validOptionsCnt")
            if itemsCnt > 1 then
                if prevItemID > 0 then
                    prevItemID = itemID
                    '第二个及以后的投票项目,先输出 "</div>" 结束之前的 HTML 标签
                    response.Write("</div>" & vbcrlf & vbcrlf & _
                                   "<div class=""item"">" & server.HTMLENcode(rs("itemName")) & "</div>" & vbcrlf & _
                                   "<div class=""optionList"">" & vbcrlf)
                else
                    prevItemID = itemID
                    response.Write("<div class=""item"">" & server.HTMLENcode(rs("itemName")) & "</div>" & vbcrlf & _
                                   "<div class=""optionList"">" & vbcrlf)
                end if
           else
               '只有一个项目,不显示项目名称
               response.Write("<div class=""optionList"">" & vbcrlf)
           end if
        end if
        
        '显示选项
        optionID = rs("optionID")
        if not IsNull(optionID) then
            if validOptionsCnt = 1 then
                '单选
                response.Write("  <div class=""option""><input type=""radio"" name=""option_" & itemID & """ value=""" & optionID & """ id=""option_" & optionID & """ />" & _
                               "<label for=""option_" & optionID & """>" & server.HTMLEncode(rs("optionText")) & "</label></div>" & vbcrlf)
            elseif validOptionsCnt <= 0 then
                '多选
                response.Write("  <div class=""option""><input type=""checkbox"" name=""option_" & itemID & """ value=""" & optionID & """ id=""option_" & optionID & """ />" & _
                               "<label for=""option_" & optionID & """>" & server.HTMLEncode(rs("optionText")) & "</label></div>" & vbcrlf)
            else
                '多选,有数量限制
                response.Write("  <div class=""option""><input type=""checkbox"" name=""option_" & itemID & """" & _
                               " onclick=""javascript:ChckOptionsCnt(this, " & validOptionsCnt & ");"" value=""" & optionID & """ id=""option_" & optionID & """ />" & _
                               "<label for=""option_" & optionID & """>" & server.HTMLEncode(rs("optionText")) & "</label></div>" & vbcrlf)
            end if
        end if
        
        rs.MoveNext
    loop
    '结束 optionList 的 HTML 标签
 %>
<script type="text/javascript" language="javascript">
<!--
//检查选择的选项数,单选或多选(不限数目的选择)勿须使用该函数
//e 为当前活动 HTML 控件,即正在进行点击的多选框
//validOptionsCnt 当前项目允许的最大选择数
function ChckOptionsCnt(e, validOptionsCnt)
{
    if (!e.checked)
    {
        return;
    }
    
    var voteForm = document.getElementById("voteForm");
    var options = eval("voteForm." + e.name);
    
    var i = 0;
    var selectedOptionsCnt = 0; //当前项目中,已经选中了选项数
    for (var i=0; i<options.length; i++)
    {
        if (options[i].checked)
        {
            selectedOptionsCnt++;
        }
    }
    
    if (selectedOptionsCnt > validOptionsCnt)
    {
        alert("该项目最多只能选择 " + validOptionsCnt + " 个选项");
        e.checked = false;
    }
}
//-->
</script>
</body></html>