下面的代码是可以使用的,实现的功能是点击明查、暗访、上网、跟班、夜查的时候添乘和巡视是不可选的,并且它们可以多选。选中添乘和巡视的时候其它的框是不可选的并且它们2各可以多选。现在要在多加一个多选框<input type="checkbox" name="jcfs" id="jcfs" value="查岗"> 查岗,点击上面的任何一个多选框这个查岗都是灰色不可选,如果点击查岗其它的多选框都是灰色不可选(之前其它的几个功能需保留)由于分数只有39分了,只有39分先笑纳。这个代码是csdn前辈给写的,我自己真实的改不来。请大大们帮忙。<input type="checkbox" name="jcfs" id="jcfs" value="明查" checked> 
明查 <input type="checkbox" name="jcfs" id="jcfs" value="暗访"> 暗访 
<input type="checkbox" name="jcfs" id="jcfs" value="添乘"> 添乘 
<input type="checkbox" name="jcfs" id="jcfs" value="上网"> 上网 
<input type="checkbox" name="jcfs" id="jcfs" value="跟班"> 跟班 
<input type="checkbox" name="jcfs" id="jcfs" value="巡视"> 巡视
<input type="checkbox" name="jcfs" id="jcfs" value="夜查"> 夜查

    <script type="text/javascript">
    <!--
Array.prototype.indexOf = function(value) {
    var index = -1;
    for (var i=0; i<this.length; i++)
    {
        if (this[i] == value)
        {
            index = i;
            break;
        }
    }
    return index;
};
Array.prototype.contains = function(value) {
    if (this.indexOf(value) != -1)
        return true;
    else
        return false;
};var colCbx = document.getElementsByName("jcfs");
var singleValue = ["添乘","巡视"];
var multipleMax = 3;
var selectedValue = new Array();function getCheckBoxByValue(value)
{
    for (var i=0; i<colCbx.length; i++)
        if(colCbx[i].value == value) return colCbx[i];
}function controlOptions(cbx)
{
    for (var i=0; i<colCbx.length; i++)
        if((cbx.isSingle && !colCbx[i].isSingle)
            || (!cbx.isSingle && colCbx[i].isSingle && (cbx.checked || selectedValue.length == 1)))
            colCbx[i].disabled = cbx.checked;
}function setSelectedValue(cbx)
{
    if (cbx.isSingle)
    {
        var value = selectedValue.shift();
        if (value)
            getCheckBoxByValue(value).checked = false;        if (cbx.checked)
            selectedValue.push(cbx.value);
    }
    else
    {
        if (cbx.checked)
        {
            if (selectedValue.length == multipleMax)
                getCheckBoxByValue(selectedValue.shift()).checked = false;            selectedValue.push(cbx.value);
        }
        else
            selectedValue.splice(selectedValue.indexOf(cbx.value), 1);
    }
}for (var i=0; i<colCbx.length; i++)
{
    colCbx[i].isSingle = singleValue.contains(colCbx[i].value);    colCbx[i].onclick = function() {
        controlOptions(this);
        setSelectedValue(this);
        addtxldj();
    };
}
</script>

解决方案 »

  1.   

    <input type="checkbox" name="jcfs" value="明查" checked>明查
    <input type="checkbox" name="jcfs" value="暗访"> 暗访
    <input type="checkbox" name="jcfs" value="添乘"> 添乘
    <input type="checkbox" name="jcfs" value="上网"> 上网
    <input type="checkbox" name="jcfs" value="跟班"> 跟班
    <input type="checkbox" name="jcfs" value="巡视"> 巡视
    <input type="checkbox" name="jcfs" value="夜查"> 夜查
    <input type="checkbox" name="jcfs" value="查岗"> 查岗
    <script type="text/javascript">
       //哪个前辈写的,连id都一大串相同,代码也腻长难懂了
       var input=document.getElementsByName("jcfs");
       for(var i=0;i<input.length;i++){
           input[i].onclick=function(){
               fun();
           };
       }
        function fun(){
            var v="";
            for(var i=0;i<input.length;i++){
                if(input[i].checked){
                    v+=input[i].value+",";
                    if("明查、暗访、上网、跟班、夜查".indexOf(input[i].value)!=-1){
                        //选中 明查、暗访、上网、跟班、夜查 --> 添乘和巡视 (查岗)是不可选
                        disable("添乘、巡视、查岗");
                    }else if("添乘、巡视".indexOf(input[i].value)!=-1){
                        //选中 添乘和巡视 --> 明查、暗访、上网、跟班、夜查 (查岗)不可选
                        disable("明查、暗访、上网、跟班、夜查、查岗");
                    }else if(input[i].value=="查岗"){
                        //选中(查岗) --> 其他不可选
                        disable("明查、暗访、上网、跟班、夜查、添乘、巡视");
                    }
                }
            }
            if(v==""){
                //一个都没选择,还原所有
                disable("");
            }
        }
        function disable(v){
            for(var i=0;i<input.length;i++){
                if(v.indexOf(input[i].value)!=-1){
                    input[i].checked=false;
                    input[i].disabled=true;
                }else{
                    input[i].disabled=false;
                }
            }
        }
       fun();
    </script>
      

  2.   

    你写的这个一团if,我看了都晕了,你重新写一下就可以了,还是建议使用jquery会简单很多。
    1.把同一类的可以多选的分为一组,给一个类。
    2.不同的组有不同的类。
    3.使用jquery通过类查询获取集合,如果是同一类,就可以用,不同类的就不能使用。
    实现之。
      

  3.   

    对了,如果以类不好分,使用jquery的下标来区分