在一个Form里有多组复选框,我要控制每组复选框只能选择3项,这个JS如何写呀?
比如:
你喜欢的水果: 
□桔子   □苹果   □梨   □香焦   □桃   □芒果   □葡萄 你喜欢的运动: 
□跑步   □游泳   □骑车   □慢走   □爬山   □跳高   □跳远 每一个组只能勾选三项

解决方案 »

  1.   

    if($("#sports input:checked").length != 3)
    {
       alert("Please select 3 items to continue.");
    }
      

  2.   

    每组能且只能选三项还是最多选三项,不过不管怎么样,在onclick事件中添加计数处理就ok了
      

  3.   

    1楼的那个$("#sports input:checked")是什么意思,小白求指导
      

  4.   

    意思是必须选择3项! 我想楼主的意思应该是最多选择三项吧:你喜欢的水果:
    <input type="checkbox" value="1" name="fruit">桔子
    <input type="checkbox" value="2" name="fruit">苹果
    <input type="checkbox" value="3" name="fruit">梨
    <input type="checkbox" value="4" name="fruit">香焦
    <input type="checkbox" value="5" name="fruit">桃
    <input type="checkbox" value="6" name="fruit">芒果
    <input type="checkbox" value="7" name="fruit">葡萄
    <hr/>
    你喜欢的运动:
    <input type="checkbox" value="1" name="sports">跑步
    <input type="checkbox" value="2" name="sports">游泳
    <input type="checkbox" value="3" name="sports">骑车
    <input type="checkbox" value="4" name="sports">慢走
    <input type="checkbox" value="5" name="sports">爬山
    <input type="checkbox" value="6" name="sports">跳高
    <input type="checkbox" value="7" name="sports">跳远
    <script type="text/javascript">
    function checkbox(arr,x){
        for(var i=0;i<arr.length;i++){
            (function(n){
                arr[n].onclick=function(){
                    var i=0;
                    for(var l=0;l<arr.length;l++){
                        if(arr[l].checked){
                            i++;
                        }
                    }
                    if (i>x){
                        arr[n].checked=false;
                        alert("不能超过"+x+"项!");
                    }
                }
            })(i)
        }
    }
    var fruit=document.getElementsByName("fruit");
    var sports=document.getElementsByName("sports");
    checkbox(fruit,3);
    checkbox(sports,3);
    </script>
      

  5.   

    楼上的代码可以优化下arr[n].onclick = function() {
        var i = x;
        for(var l = 0, len = arr.length; l < len; l++) {
            if(arr[l].checked) {
                i--;
                if(i == 0) {
                   arr[n].checked=false;
                   alert("不能超过"+x+"项!");
                   break;
                }
            }
        }
    }
      

  6.   

    建议好!不过if(i == 0)应该改成if(i < 0)