我有一张调查问卷,是通过<c:forEach>嵌套循环生成的,外层生成问题,内层生成选项,内层是先判断选项的编号和问题的编号匹配了才生成,最后出来一个调查问卷的页面,页面中的内容和选项都可以修改提交,现在的问题是修改的过程中如果同一个问题的选项值重复了,提交时要拦截一下提示输入有误,比如问题1.你喜欢音乐吗?下面四个选项序号分别是ABCD,如果客户修改成了AACD,或ABBD或ABDD等等,提交时要提示用户输入有误,选项序号重复了,这个要怎么做呢?用jquery,谁给讲讲?
调试欢乐多
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://client:80/zjmobile/">
<title>调查问卷问题列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<script type="text/javascript" src="resource/js/lib/jquery-1.4.2.min.js"></script>
<script src="resource/js/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" href="resource/css/newstyle.css"/>
<link href="resource/css/jquery-ui.1.8.6.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function check(){
var result = true;
$(":input[type=text]").each(function(){
if(this.value==""){
alert("没有输入完整");
result = false;
return false;
}
});
return result;
}
function update(){
if(check()){
$("#myform").submit();
alert("提交成功");
}
}
function unique(){
$("")
}
</script>
</head>
<body>
<form action="mobile/doctor/updateSurvey!updateSurvey" method="post" id="myform">
<h2 style="font-size: medium">问卷题目:</h2><input name="title" value="生活习惯调查问卷" style="font-size: medium">
<input type="hidden" name="bid" value="2"> <br/><br/>
<table width="90%" border="0" align="center" cellpadding="5" id="tab"
cellspacing="1" bgcolor="#94D6E3" class="dds2">
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="您吸烟吗">选择类型<input type="hidden" name="qid" value="2">
单选<input name="choiceType2" value="1" checked="checked" type="radio">
多选<input name="choiceType2" value="2" type="radio">
</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option11" value="a,3">
<input type="hidden" name="oid" value="16">
<input type="hidden" name="oqid" value="2">
</td>
<td><input name="oTitle" type="text" value="经常"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option12" value="b,3">
<input type="hidden" name="oid" value="17">
<input type="hidden" name="oqid" value="2">
</td>
<td><input name="oTitle" type="text" value="偶尔"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option13" value="c,3">
<input type="hidden" name="oid" value="18">
<input type="hidden" name="oqid" value="2">
</td>
<td><input name="oTitle" type="text" value="从不"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="您喝酒吗?">选择类型<input type="hidden" name="qid" value="3">
单选<input name="choiceType3" value="1" checked="checked" type="radio">
多选<input name="choiceType3" value="2" type="radio">
</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option24" value="a,3">
<input type="hidden" name="oid" value="19">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value="经常"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option25" value="b,3">
<input type="hidden" name="oid" value="20">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value="从不"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option26" value="c,3">
<input type="hidden" name="oid" value="21">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value="偶尔"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option27" value="d,3">
<input type="hidden" name="oid" value="22">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value="总是"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="您怕冷吗?">选择类型<input type="hidden" name="qid" value="4">
单选<input name="choiceType4" value="1" type="radio">
多选<input name="choiceType4" value="2" checked="checked" type="radio">
</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option38" value="a,3">
<input type="hidden" name="oid" value="23">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="很怕冷"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option39" value="b,3">
<input type="hidden" name="oid" value="24">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="不怕冷"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option310" value="c,3">
<input type="hidden" name="oid" value="25">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="有时怕冷"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option311" value="d,3">
<input type="hidden" name="oid" value="26">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="很少怕冷"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option312" value="e,3">
<input type="hidden" name="oid" value="27">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="基本不怕冷"></td>
</tr>
</table>
</form>
<h3 align="right">
<a href="javascript:update();">修改</a>
<a href="mobile/doctor/surveyList!findAll">返回</a>
</h3>
</body>
</html>
<h2 style="font-size: medium">问卷题目:</h2><input name="title" value="${title}" style="font-size: medium">
<input type="hidden" name="bid" value="${bid}"> <br/><br/>
<table width="90%" border="0" align="center" cellpadding="5" id="tab"
cellspacing="1" bgcolor="#94D6E3" class="dds2">
<c:forEach items="${q_list}" var="q" varStatus="qStatus">
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="${q.qtitle}">选择类型<input type="hidden" name="qid" value="${q.id}">
<c:if test="${q.choiceType eq 1}">
单选<input name="choiceType${q.id}" value="${q.choiceType}" checked="checked" type="radio">
多选<input name="choiceType${q.id}" value="2" type="radio">
</c:if>
<c:if test="${q.choiceType eq 2}">
单选<input name="choiceType${q.id}" value="1" type="radio">
多选<input name="choiceType${q.id}" value="${q.choiceType}" checked="checked" type="radio">
</c:if>
</td>
</tr>
<c:forEach items="${o_list}" var="o" varStatus="oStatus">
<c:if test="${q.id == o.questionId}">
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option${qStatus.count}${oStatus.count}" value="${o.value}">
<input type="hidden" name="oid" value="${o.id}">
<input type="hidden" name="oqid" value="${o.questionId}">
</td>
<td><input name="oTitle" type="text" value="${o.oTitle}"></td>
</tr>
</c:if>
</c:forEach>
</c:forEach>
</table>
</form>
那个a3b3什么的是我测试用的,实际的时候就是a。
正则好难啊,怎么整
你可不可以这样:在调出问题的时候给每个问题上面给一个编号(id之类的),然后赋值给改问题所在的<tr>的自定义属性(自定义属性很方便使用)。 这样用jquery的选择器可以选择改问题中所有的type="text"的input,也就是你的选项,然后再比较这些值是不是符合规则,至于比较的方法你自己可以选择合适的。
//第一层循环,按问题循环
$("input[name='qid']").each(function(){
//第二层循环,按 oqid 循环
$("input[name='oqid'][value='" + this.value + "']").each(function(){
var val = $(this).prev().prev().val(); //往前两个同辈元素,这里取出选项的值
//以下判断是否重复
});
});
你怎么不懂我说的呢?
<html>
<head>
<base href="http://client:80/zjmobile/">
<title>调查问卷问题列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<style>
.inputerr{
color:red;
}
</style>
<script type="text/javascript">
function check(){
var result = true;
$(":input[type=text]").each(function(){
if(this.value==""){
alert("没有输入完整");
result = false;
return false;
}
});
return result;
}
function update(){
if(check()){
$("#myform").submit();
alert("提交成功");
}
}
function unique(){
$("")
}
$(function(){
//$("#tab td").each(function(idx){this.innerHTML+=idx}); //此行为debug而设,想了解可去除注释
/*
基本思路:先记下哪里到哪里是同一首题
再对这部分内容进行重复值判断
*/
$("#chkrepeat").click(function(){
$("span.inputerr").remove();
var a=[],o={};
$("#tab td").each(function(idx){
if(2 == $(this).attr("colspan")){
a.push(idx);
}
});
a.push($("#tab td").length);//为了让下面的循环不溢出
//上面实现了:先记下哪里到哪里是同一首题 for(var i=0 ; i<a.length-1; i++){
$("#tab td:lt(" + a[i+1] + "):gt(" + a[i] + ") input[name=oTitle][value!='']").each(function(idx){
if(!(o[this.value])){
o[this.value] = idx+1; //o[this.value]如果等于0,那!o[this.value]还是等于true;
}else{
$(this).after("<span class='inputerr'>此选项有重复</span>");
}
});
o={};
}
//上面实现了:再对这部分内容进行重复值判断
});
})
</script>
</head>
<body>
<form action="mobile/doctor/updateSurvey!updateSurvey" method="post" id="myform">
<h2 style="font-size: medium">问卷题目:</h2><input name="title" value="生活习惯调查问卷" style="font-size: medium">
<input type="hidden" name="bid" value="2"> <br/><br/>
<table width="90%" border="0" align="center" cellpadding="5" id="tab"
cellspacing="1" bgcolor="#94D6E3" class="dds2">
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="您吸烟吗">选择类型<input type="hidden" name="qid" value="2">
单选<input name="choiceType2" value="1" checked="checked" type="radio">
多选<input name="choiceType2" value="2" type="radio">
</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option11" value="a,3">
<input type="hidden" name="oid" value="16">
<input type="hidden" name="oqid" value="2">
</td>
<td><input name="oTitle" type="text" value="11"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option12" value="b,3">
<input type="hidden" name="oid" value="17">
<input type="hidden" name="oqid" value="2">
</td>
<td><input name="oTitle" type="text" value="12"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option13" value="c,3">
<input type="hidden" name="oid" value="18">
<input type="hidden" name="oqid" value="2">
</td>
<td><input name="oTitle" type="text" value="11"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="您喝酒吗?">选择类型<input type="hidden" name="qid" value="3">
单选<input name="choiceType3" value="1" checked="checked" type="radio">
多选<input name="choiceType3" value="2" type="radio">
</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option24" value="a,3">
<input type="hidden" name="oid" value="19">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value="经常"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option25" value="b,3">
<input type="hidden" name="oid" value="20">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value="从不"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option26" value="c,3">
<input type="hidden" name="oid" value="21">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value=""></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option27" value="d,3">
<input type="hidden" name="oid" value="22">
<input type="hidden" name="oqid" value="3">
</td>
<td><input name="oTitle" type="text" value=""></td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" bgcolor="#94D6E3">
<input name="qtitle" value="您怕冷吗?">选择类型<input type="hidden" name="qid" value="4">
单选<input name="choiceType4" value="1" type="radio">
多选<input name="choiceType4" value="2" checked="checked" type="radio">
</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option38" value="a,3">
<input type="hidden" name="oid" value="23">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="11"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option39" value="b,3">
<input type="hidden" name="oid" value="24">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="11"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option310" value="c,3">
<input type="hidden" name="oid" value="25">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="22"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option311" value="d,3">
<input type="hidden" name="oid" value="26">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="22"></td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="10" >
<input name="value" id="option312" value="e,3">
<input type="hidden" name="oid" value="27">
<input type="hidden" name="oqid" value="4">
</td>
<td><input name="oTitle" type="text" value="22"></td>
</tr>
</table>
</form>
<h3 align="right">
<input type="button" value="检查一个道题有无重复的选项" id="chkrepeat"/>
<a href="javascript:update();">修改</a>
<a href="mobile/doctor/surveyList!findAll">返回</a>
</h3>
</body>
</html