一个超复杂的选项重复判断问题

轻弹浅唱 2011-12-21 11:21:03
我有一张调查问卷,是通过<c:forEach>嵌套循环生成的,外层生成问题,内层生成选项,内层是先判断选项的编号和问题的编号匹配了才生成,最后出来一个调查问卷的页面,页面中的内容和选项都可以修改提交,现在的问题是修改的过程中如果同一个问题的选项值重复了,提交时要拦截一下提示输入有误,比如问题1.你喜欢音乐吗?下面四个选项序号分别是ABCD,如果客户修改成了AACD,或ABBD或ABDD等等,提交时要提示用户输入有误,选项序号重复了,这个要怎么做呢?用jquery,谁给讲讲?
...全文
182 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻弹浅唱 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 p2227 的回复:]
HTML code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://client:80/zjmobile/">
<title>调查问卷问题列表</title>
<meta http-……
[/Quote]还是你厉害
p2227 2011-12-24
  • 打赏
  • 举报
回复
<!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 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
轻弹浅唱 2011-12-23
  • 打赏
  • 举报
回复
网站怎么不能引用了?奇怪,23楼的代码不行
轻弹浅唱 2011-12-23
  • 打赏
  • 举报
回复
21楼你理解错了,要修改是客户的需要,客户需求变化了当然可以修改,我们是保证客户的修改合法,客户修改选项序号的时候要保证不和同一个问题的其他选项的序号重复,这是关键
墨魚丸 2011-12-23
  • 打赏
  • 举报
回复
不是要jquery代码吗?我给出来了,怎么不说一下能不能用?是不是漏掉了,没看到?
mimixiaoxin 2011-12-23
  • 打赏
  • 举报
回复
你不是想让提交的时候每个问题的选项名不能重复吗?那么我的思路是:将每个问题看作一个对象,得到它的所有选项(也就是你要提交的a b c d),然后判断这些选项是不是有重复的。
你怎么不懂我说的呢?
角斗士 2011-12-23
  • 打赏
  • 举报
回复
你生成问卷不是根据数据库的数据生成的吗?数据库的数据这么插进去的?不能在插入数据库的时候就控制不能重复吗?插进去的都插进去了才要修改,我觉得你这做法本身就有问题。
轻弹浅唱 2011-12-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 zaple 的回复:]
做问答,像这种都用radio吧,用radio不就不会重复了,不管是修改还是提交,只要提交的时候不重复,修改的时候也不会重复啊。(应该说插入数据库时就不重复,读出来也肯定不重复)
[/Quote]
现在不是做题,是生成问卷,管理用从数据库里调出来问题和选项,然后修改选项之后再存进数据库
角斗士 2011-12-23
  • 打赏
  • 举报
回复
做问答,像这种都用radio吧,用radio不就不会重复了,不管是修改还是提交,只要提交的时候不重复,修改的时候也不会重复啊。(应该说插入数据库时就不重复,读出来也肯定不重复)
轻弹浅唱 2011-12-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mimixiaoxin 的回复:]
我把你的代码copy显示出来看了。
你可不可以这样:在调出问题的时候给每个问题上面给一个编号(id之类的),然后赋值给改问题所在的<tr>的自定义属性(自定义属性很方便使用)。 这样用jquery的选择器可以选择改问题中所有的type="text"的input,也就是你的选项,然后再比较这些值是不是符合规则,至于比较的方法你自己可以选择合适的。
[/Quote]
额,不太懂你说的
墨魚丸 2011-12-23
  • 打赏
  • 举报
回复
方法比较笨拙,参考参考


//第一层循环,按问题循环
$("input[name='qid']").each(function(){
//第二层循环,按 oqid 循环
$("input[name='oqid'][value='" + this.value + "']").each(function(){
var val = $(this).prev().prev().val(); //往前两个同辈元素,这里取出选项的值
//以下判断是否重复
});
});

mimixiaoxin 2011-12-23
  • 打赏
  • 举报
回复
我把你的代码copy显示出来看了。
你可不可以这样:在调出问题的时候给每个问题上面给一个编号(id之类的),然后赋值给改问题所在的<tr>的自定义属性(自定义属性很方便使用)。 这样用jquery的选择器可以选择改问题中所有的type="text"的input,也就是你的选项,然后再比较这些值是不是符合规则,至于比较的方法你自己可以选择合适的。
轻弹浅唱 2011-12-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 p2227 的回复:]
引用 13 楼 yc1172000 的回复:

引用 12 楼 axiheyhey 的回复:
判断重复很简单,二个循环一个判断+正则搞定

你说的对,就是管理员用的。
那个a3b3什么的是我测试用的,实际的时候就是a。
正则好难啊,怎么整
就是同一道题里面的选项不能相同?
[/Quote]
对,就是这个意思!!!!!!
峭沙 2011-12-22
  • 打赏
  • 举报
回复
判断重复很简单,二个循环一个判断+正则搞定
峭沙 2011-12-22
  • 打赏
  • 举报
回复
说实话你的这个页面实在是让人够蛋疼的,如果没猜错的话,你的这个页面是给管理员用的,用来输入问题和答案,提交后就存入数据库,而用户访问的调查页面是根据这些信息生成的吧?
假设我猜得没错,你的这个页面也太操蛋了点,还有a,3 b,3这算哪门子的序号啊,而且这些选项的序号为什么不是固定的?

要我来做,我会把选项序号固定,只判定选项的具体值会不会重复。
轻弹浅唱 2011-12-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 axiheyhey 的回复:]
这种选择题的问卷,为什么不用radio和checkbox?
[/Quote]
现在不是做题,是生成问卷,从数据库里调出来问题和选项,然后修改之后再存进数据库
p2227 2011-12-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yc1172000 的回复:]

引用 12 楼 axiheyhey 的回复:
判断重复很简单,二个循环一个判断+正则搞定

你说的对,就是管理员用的。
那个a3b3什么的是我测试用的,实际的时候就是a。
正则好难啊,怎么整
[/Quote]就是同一道题里面的选项不能相同?
轻弹浅唱 2011-12-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 axiheyhey 的回复:]
判断重复很简单,二个循环一个判断+正则搞定
[/Quote]
你说的对,就是管理员用的。
那个a3b3什么的是我测试用的,实际的时候就是a。
正则好难啊,怎么整
南老頭 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 p2227 的回复:]

我还没看懂你的问卷是怎么填的
[/Quote]
+1
p2227 2011-12-21
  • 打赏
  • 举报
回复
我还没看懂你的问卷是怎么填的
加载更多回复(7)

87,997

社区成员

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

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