我有一张调查问卷,是通过<c:forEach>嵌套循环生成的,外层生成问题,内层生成选项,内层是先判断选项的编号和问题的编号匹配了才生成,最后出来一个调查问卷的页面,页面中的内容和选项都可以修改提交,现在的问题是修改的过程中如果同一个问题的选项值重复了,提交时要拦截一下提示输入有误,比如问题1.你喜欢音乐吗?下面四个选项序号分别是ABCD,如果客户修改成了AACD,或ABBD或ABDD等等,提交时要提示用户输入有误,选项序号重复了,这个要怎么做呢?用jquery,谁给讲讲?

解决方案 »

  1.   

    先把浏览器生成的HTML代码贴出来
      

  2.   

     
    <!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>
      

  3.   

    <form action="mobile/doctor/updateSurvey!updateSurvey" method="post" id="myform">
    <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>
      

  4.   

    要让每个问题的o.value的值不能重复
      

  5.   

    举个例子就好,java级别的源代码给我也没用
      

  6.   

    这行会循环出好几个value,只要不能重复就行<input name="value" id="option${qStatus.count}${oStatus.count}" value="${o.value}">
      

  7.   

    这种选择题的问卷,为什么不用radio和checkbox?
      

  8.   

    你说的对,就是管理员用的。
    那个a3b3什么的是我测试用的,实际的时候就是a。
    正则好难啊,怎么整
      

  9.   

    我把你的代码copy显示出来看了。
    你可不可以这样:在调出问题的时候给每个问题上面给一个编号(id之类的),然后赋值给改问题所在的<tr>的自定义属性(自定义属性很方便使用)。 这样用jquery的选择器可以选择改问题中所有的type="text"的input,也就是你的选项,然后再比较这些值是不是符合规则,至于比较的方法你自己可以选择合适的。
      

  10.   

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

  11.   

    做问答,像这种都用radio吧,用radio不就不会重复了,不管是修改还是提交,只要提交的时候不重复,修改的时候也不会重复啊。(应该说插入数据库时就不重复,读出来也肯定不重复)
      

  12.   

    你不是想让提交的时候每个问题的选项名不能重复吗?那么我的思路是:将每个问题看作一个对象,得到它的所有选项(也就是你要提交的a b c d),然后判断这些选项是不是有重复的。
    你怎么不懂我说的呢?
      

  13.   

    不是要jquery代码吗?我给出来了,怎么不说一下能不能用?是不是漏掉了,没看到?
      

  14.   

    <!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