比如有10条规定  如果1-5条规定中有2条没打钩 那么就判定这次的评选不合格
比如如果6-9条规定中有2条没打钩 并且1、5、6有1条没打钩 那么就判定这次的评选不合格
就是这样的 参数是可以设置的 就是第几条到第几条如果没打钩 或者某几条中的条没打钩 就不合格我想知道这样怎么实现呢 数据库表怎么设计 还有JSP JS怎么写呢 求大神高人给个例子 指点下小弟 小弟参考下吧 很紧急 觉得好难 是CHECKBOX的 

解决方案 »

  1.   

    定义一个规则表,如:
    id name
    1 规则1定义一个规则明细表,如:
    id pid type value
    1  1   to   1,5
    2  1   to   6,9
    3  1   and  1,5,6
    其中pid为上面规则表的id
    在规定表里面添加规则表id,表示这规定按什么规则来判定。
      

  2.   

    我不知道js或者JSP怎么用代码实现
      

  3.   

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8"/>
    </head>
    <body>
    <form id="myform">
    <input type="checkbox" class="rule" id="rule1" name="rule1" value="rule1"/>
    <label for="rule1">Rule1</label>
    <br/>
    <input type="checkbox" class="rule" id="rule2" name="rule2" value="rule2"/>
    <label for="rule2">Rule2</label>
    <br/>
    <input type="checkbox" class="rule" id="rule3" name="rule3" value="rule3"/>
    <label for="rule3">Rule3</label>
    <br/>
    <input type="checkbox" class="rule" id="rule4" name="rule4" value="rule4"/>
    <label for="rule4">Rule4</label>
    <br/>
    <input type="checkbox" class="rule" id="rule5" name="rule5" value="rule5"/>
    <label for="rule5">Rule5</label>
    <br/>
    <input type="checkbox" class="rule" id="rule6" name="rule6" value="rule6"/>
    <label for="rule6">Rule6</label>
    <br/>
    <input type="checkbox" class="rule" id="rule7" name="rule7" value="rule7"/>
    <label for="rule7">Rule7</label>
    <br/>
    <input type="checkbox" class="rule" id="rule8" name="rule8" value="rule8"/>
    <label for="rule8">Rule8</label>
    <br/>
    <input type="checkbox" class="rule" id="rule9" name="rule9" value="rule9"/>
    <label for="rule9">Rule9</label>
    <br/>
    <input type="checkbox" class="rule" id="rule10" name="rule10" value="rule10"/>
    <label for="rule10">Rule10</label>
    <br/>
    <input id="verify" type="button" value="verify"/>
    </form>
    <script type="text/javascript">
        function Check(container){
         var options = [],
         checkboxs = [];
         var defaultOption = {
         begin: 0,
         end: 5,
         entry: 0
         }
         this.init = function(){
         var inputs = container.getElementsByTagName("input"),
         input = null;
         for(var i = 0; i < inputs.length; i++){
         input = inputs[i];
         if("checkbox" === input.type){
         checkboxs.push(input);
         }
         }
         }
         this.verify = function(){
         for(var i = 0, len = options.length; i < len; i++){
         if(!this.check(options[i])){
         this.alert("不合格");
         return false;
         }
         }
         this.alert("合格");
         }
         this.check = function(option){
         var count = 0;
         option.length && option.push(defaultOption);
         if(option.begin > checkboxs.length){
         this.alert("error");
         }else if(option.end > checkboxs.length){
         option.end = checkboxs.length;
         }
         for(var i = option.begin - 1; i < option.end; i++){
         if(!checkboxs[i].checked){
         count++;
         }
         }
         return option.entry >= count ? true : false;
        
         }
         this.setRule = function(begin, end, entry){
         var o = {};
         o.begin = begin;
         o.end = end;
         o.entry = entry;
         options.push(o);
         }
         this.alert = function(str){
         alert(str);
         }
        
         this.init();
        
        }
        
        document.getElementById("verify").onclick = function(){
         var callee = arguments.callee;
         if(!callee.check){
         callee.check = new Check(document.getElementById("myform"));
        callee.check.setRule(1, 5, 0);
        callee.check.setRule(6, 10, 2);
         }
         callee.check.verify();
        };
    </script>
    </html>
      

  4.   

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8"/>
    </head>
    <body>
    <form id="myform">
    <input type="checkbox" class="rule" id="rule1" name="rule1" value="rule1"/>
    <label for="rule1">Rule1</label>
    <br/>
    <input type="checkbox" class="rule" id="rule2" name="rule2" value="rule2"/>
    <label for="rule2">Rule2</label>
    <br/>
    <input type="checkbox" class="rule" id="rule3" name="rule3" value="rule3"/>
    <label for="rule3">Rule3</label>
    <br/>
    <input type="checkbox" class="rule" id="rule4" name="rule4" value="rule4"/>
    <label for="rule4">Rule4</label>
    <br/>
    <input type="checkbox" class="rule" id="rule5" name="rule5" value="rule5"/>
    <label for="rule5">Rule5</label>
    <br/>
    <input type="checkbox" class="rule" id="rule6" name="rule6" value="rule6"/>
    <label for="rule6">Rule6</label>
    <br/>
    <input type="checkbox" class="rule" id="rule7" name="rule7" value="rule7"/>
    <label for="rule7">Rule7</label>
    <br/>
    <input type="checkbox" class="rule" id="rule8" name="rule8" value="rule8"/>
    <label for="rule8">Rule8</label>
    <br/>
    <input type="checkbox" class="rule" id="rule9" name="rule9" value="rule9"/>
    <label for="rule9">Rule9</label>
    <br/>
    <input type="checkbox" class="rule" id="rule10" name="rule10" value="rule10"/>
    <label for="rule10">Rule10</label>
    <br/>
    <input id="verify" type="button" value="verify"/>
    </form>
    <script type="text/javascript">
        function Check(container){
         var options = [],
         checkboxs = [];
         var defaultOption = {
         begin: 0,
         end: 5,
         entry: 0,
         list: [],
         include: false,
         condition: null
         }
         this.init = function(){
         var inputs = container.getElementsByTagName("input"),
         input = null;
         for(var i = 0; i < inputs.length; i++){
         input = inputs[i];
         if("checkbox" === input.type){
         checkboxs.push(input);
         }
         }
         }
         this.verify = function(){
         for(var i = 0, len = options.length; i < len; i++){
         if(!this.check(options[i])){
         this.alert("不合格");
         return false;
         }
         }
         this.alert("合格");
         }
         this.check = function(option){
         var includeCounter = 0, excludeCounter = 0;
         option.length && option.push(defaultOption);
         if(option.begin > checkboxs.length){
         this.alert("error");
         }else if(option.end > checkboxs.length){
         option.end = checkboxs.length;
         }
         if(option.list && option.list.length > 0){
         for(var i = 0, len = option.list.length; i < len; i++){
         if(!checkboxs[option.list[i] - 1].checked){
         return false;
         }
         }
         }
         for(var i = option.begin - 1; i < option.end; i++){
         if(option.include && checkboxs[i].checked){
         includeCounter++;
         }else if(!option.include && !checkboxs[i].checked){
         excludeCounter++;
         }
         }
         if(option.include && includeCounter >= option.entry){
         return true;
         }else if(!option.include && excludeCounter <= option.entry){
         return true;
         }else if(option.condition){
         return this.check(option.condition);
         }else{
         return false;
         }
        
         }
         this.setRule = function(option1, option2){
         option2 && (option1.condition = option2);
         options.push(option1);
         }
         this.extend = function(obj1, obj2){
        
         }
         this.alert = function(str){
         alert(str);
         }
        
         this.init();
        
        }
        
        document.getElementById("verify").onclick = function(){
         var callee = arguments.callee;
         if(!callee.check){
         callee.check = new Check(document.getElementById("myform"));
        callee.check.setRule({begin: 1, end: 5, entry: 1});
        callee.check.setRule({begin: 6, end: 9, entry: 1}, {list: [1,5,6], entry: 0, include:true});
         }
         callee.check.verify();
        };
    </script>
    </html>