jsp+js:单选按钮、复选框有分组,个数不确定,如何验证每组是否选择?

shenxueshi 2005-12-28 03:25:47
各位大虾,我在做一个网上调查项目,分内外网,调查问卷(包括问题、问题可选项)由管理员在内网添加到数据库中生成,外网页面读取数据库生成问卷,这样每份问卷问题个数、每个问题选项数都是不固定的,问题只分单选、复选两种,我怎样用js验证确保提交时每个问题都已经做出选择?也就是我的check()函数应该怎样写?
我对js不熟悉,请各位多帮忙,先谢谢了!

附jsp代码如下:
<body>
<%
UfPaper paper = (UfPaper)session.getAttribute("paper"); //问卷对象
List questList = (List)request.getAttribute("questList"); //问题集合
String paperName = paper.getPapername();
String paperDes = paper.getPapercon();
String paperID = paper.getOid();
%>
<p align="center"><%=paperName%></p> //问卷名
<p>    <%=paperDes%></p> //问卷描述
<form action="answerPaper.do" method="post" name="form1" onsubmit="return check()">
<input type="hidden" name="paperID" value="<%=paperID%>">
<table align="center" width="90%">
<%
for(int i=0;i<questList.size();i++) //遍历问题集合
{
UfQuest quest = (UfQuest)questList.get(i); //问题类
Set itemSet = quest.getUfItemSet(); //选项集
String questName = quest.getQuestname();
String questType = quest.getQuesttype();
String questID = quest.getOid();
%>
<tr><td>
<%=i+1%>. <%=questName%> //问题描述
<%
if(questType.equals("1"))
{
%>
(答案可多选)
<%
}
%>
</td></tr>
<tr><td>
<%
UfItem item = null;
Iterator iterator = itemSet.iterator();
while(iterator.hasNext()){ //遍历选项集
item = (UfItem)iterator.next();
String itemName = item.getItemname();
String itemID = item.getOid();
if(questType.equals("0")) //0代表单选
{
%>
    <input type="radio" name="<%=questID%>" value="<%=itemID%>"><%=itemName%> //生成单选按钮,同一个问题的单选按钮name属性相同
<%
}
else
{
%>
    <input type="checkbox" name="<%=questID%>" value="<%=itemID%>"><%=itemName%> //生成复选框,同一个问题的复选框name属性相同
<%
}
}
%>
</td></tr>
<%
}
%>
</table>
<p align="center"><input type="submit" value="下一步">  <input type="reset" value="重填"></p>
</form>
</body>
...全文
1091 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenxueshi 2005-12-29
  • 打赏
  • 举报
回复
<input type="radio" name="<%=questID%>" value="<%=itemID%>"><%=itemName%>

如上,在我的jsp页面中,单选按钮的name属性、value属性等都是从数据库中获得的,所以:

var obj=document.getElementsByName("radio1")
函数document.getElementsByName()的参数不是固定的,不过我由此得到启发,在我的jsp页面每个问题后面添加了一个元素:
<input type="hidden" name="quest" value="<%=questID%>" >,把每个问题中单选按钮或复选框的name属性保存到隐藏域中,在js函数中:

function check(){
var quests=document.getElementsByName("quest"); //获得所有隐藏域,每个问题对应一个
var questnum=quests.length;
for(var i=0;i<questnum;i++){ //遍历每个问题
var questid=quests[i].getAttribute("value"); //隐藏域的value属性,也就是每个问题单选、复选按钮的name属性
var options=document.getElementsByName(questid); //获得所有选项
var optionnum=options.length;
var flag=0;
for(var j=0;j<optionnum;j++){ //遍历每个选项
if(options[j].checked){
flag=1;
break;
}
}
if(flag==0){
alert("您有问题没回答!");
return false;
}
}
return true;
}

这样问题终于得到解决。

十分感谢天外水火!
hbhbhbhbhb1021 2005-12-28
  • 打赏
  • 举报
回复
<input name=radio1 type=radio>
<input name=radio1 type=radio>
<input name=radio1 type=radio>
<input name=radio1 type=radio>
<input name=button1 type=button value="检查" onclick=haha()>
<script language=javascript>
function haha()
{
var obj=document.getElementsByName("radio1")
var objlength=obj.length;
var falg=0;
for(var i=0;i<objlength;i++)
{
if(obj[i].checked)
{
falg=1;
break;
}
}
if(falg==0)
{
alert("没选");
return false;
}
else
{
//提交表单
}

}
</script>
shenxueshi 2005-12-28
  • 打赏
  • 举报
回复
呵呵,js版可真活跃啊,这么一会,帖子就沉了。
大侠们,帮忙啊

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧