冒泡法解决Jquery 下radio和checkbox的提交空值检查问题

这些日子一直在做投票,经过学习,终于做成了后台的所有和前台的显示。

刚刚做提交的时候,一件重要的事情,排空提醒了我。

每一题的选项input有生成的不同的name,题量和name都未知,有单选和多选,怎么判断用户没有按要求点击?

很自然的想到在不同题型的情况下做判断。这个当然不是重点。重点是,我们怎么选出一个题的一组选项按钮,并且进行判断操作。他们只有一个特征,就是name相同,根据这个特征,自然就能想出解决的办法了。

我接触过VB和Java语言,说来笑话,虽然基本等于没学,但是其中一些比较有趣的算法还是很感兴趣,这两种语言刚学循环的时候基本上都要讲一讲排序。听到这两个字明朗了吧。我要用冒泡排序法将有特征的一组值选出来!

基本原理是这样的:假定一个name然后和符合条件的input name比较,如果不相同就把input name的值给假定的name,再通过选择器和name值将这一组值选出来,判断处理并标记。循环,将改变过的假定的name值与下一个input name值比较,以此循环,直到所有的值都被标记为止。循环结束!

神奇吧,思想的神奇性!看来没有什么没有用的知识,只看你能不能学精!下面给出代码:

function  check_all()
         {
           $("input[sj]").attr("done","done")//初始化属性
           var name_id=0;//定义name初始值,冒泡法解决
           var input_size=$("input[sj]").size();
           //alert(input_size); 
           var str="";
           for(var i=0;i<input_size;i++)
             {
               var input_name=$("input[done=done]").eq(0).attr("name");
              // alert(input_name);
              
               if(input_name!=undefined&&input_name!=""&&input_name!=name_id)//debug 保证查找是有结果的
               {
                 name_id=input_name;
                 //查找所有input_name相同的项,进行处理并标记
                 $("input[name='"+name_id+"']").removeAttr("done");
                  var type=$("input[name='"+name_id+"']").eq(0).attr("type");
                 //处理函数
                 //alert(name_id);alert(type);
                 
                  if(type=="radio")//必选而且只能选一个
                   {// alert("a")
                    var check_num=$('input:checked[name='+name_id+']').size();
                    //alert(check_num);
                    if(check_num!=1)
                    {     
                      str+= "您还有单选题没有做哦,是不是点掉了";
                    }
                   }
                   if(type=="checkbox")//至少选一个
                   {
                    var check_num=$('input:checked[name='+name_id+']').size();
                    //alert(check_num);
                    if(check_num<1)
                    {
                      str+= "您还有多选题没有做哦,是不是点掉了";
                    }
                   }     
               }//排空if             
             }// for
            $("#msg").html(str).show();
        }//function

呵呵,代码的注释多了些,菜鸟嘛,方便排错!