jq怎么知道页面里有几"组"name相同的radio/CheckBox?表单是动态未知的。我目前的想法是做个Hash表,如果表单大的话,判断name相同的复杂度太高了。

解决方案 »

  1.   

    <SCRIPT LANGUAGE="JavaScript"> 
    //自定义哈希表类 
    function Hashtable() 

        this._hash = new Object(); // 创建Object对象 
        //哈希表的添加方法 
        this.add = function(key,value){ 
                    if(typeof(key)!="undefined"){ 
                        if(this.contains(key)==false){ 
                              this._hash[key]=typeof(value)=="undefined"?null:value; 
                              return true; 
                        } else { 
                              return false; 
                        } 
                    } else { 
                              return false; 
                    } 
                } 
        //哈希表的移除方法 
        this.remove = function(key){delete this._hash[key];} 
        //哈希表内部键的数量 
        this.count = function(){var i=0;for(var k in this._hash){i++;} return i;} 
      //通过键值获取哈希表的值 
        this.items = function(key){return this._hash[key];} 
        //在哈希表中判断某个值是否存在 
        this.contains = function(key){ return typeof(this._hash[key])!="undefined";} 
        //清空哈希表内容的方法 
        this.clear = function(){for(var k in this._hash){delete this._hash[k];}} } 
    var myhash=new Hashtable();  //创建哈希表 
    myhash.add("name","张三");    //添加键和值 
    alert(myhash.item["name"]);  //根据指定键显示哈希表的值 
    </script> 
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/superdullwolf/archive/2009/08/19/4463372.aspx
      

  2.   

    不是删除,就是判断每组至少有一个被checked
    JQ里$(":radio 或者 :checkbox")怎么写?
      

  3.   


    $(":radio:checked).size()
    $(":checkbox:checked).size()
    至于每组就用循环
    $.each(array, function () {//假定array放的name
        $(":radio[name='" + this + "']:checked).size()
    })
      

  4.   

        <script type="text/javascript">
            $("#NextQuestion").bind("click", function() {
                if (checkForm()) {
                   $("form").submit();                
                }
                else
                { alert("请填写完整"); }
            });
            function checkForm() {
                var myhash = new Hashtable();
                var re = true;
               $("form :radio").add("form :checkbox").each(function() {           
                    var name = $(this).attr("name");
                    if (!myhash.contains(name)) {
                        myhash.add(name, 1);
                    }
                    else {
                        myhash.items[name]++;
                    }
                }
                );            for (var name in myhash.items) {               
                    var sum = $("form :input[name='" + name + "']:checked").size();                
                    if (sum == 0) {
                        re = false;
                        break;
                    }
                }
                return re;
            }
        </script>
    得瑟一下:)
      

  5.   

    To:IBM_hoojo问题在于array里去掉重复,所以要用Hash 表,减少循环次数。
    O(n^2)和O(n)的区别。不过意义不大,因为n最多大概是一百多。
    就按照200算,是4万和2百次循环的差别,感觉不是很明显。
    如果一千和一百万差别就明显了。