启用和禁用复选框不会禁用该按钮

时间:2014-10-07 09:44:52

标签: javascript

以下是我的代码:

根据我的功能,当我勾选我的复选框时,必须禁用该按钮,当我取消选中时,必须启用复选框按钮。

function assignDefect() {          
    var new_tc_arry = new Array();     
    var checkbox = document.getElementsByName('radSize1');    
    for(var i=0;i<checkbox.length;i++){   
        if(!checkbox[i].disabled && checkbox[i].checked){  
            var checkedbox = checkbox[i].value;            
            new_tc_arry.push(checkbox[i].value);    
            for(var i=0;i<new_tc_arry.length;i++){    
                console.log("new_tc_arry["+i+"] -->"+new_tc_arry[i]);    
                document.getElementById("OrphanbuttonId").disabled =true;   
            }    
        }    
        else {    
        document.getElementById("OrphanbuttonId").disabled=false;                                                                                      
        }   
}      

The above code is disabling my button when i check my last checkbox.
Its not working for 1st ,2nd..etc checkboxes.**

1 个答案:

答案 0 :(得分:0)

问题是因为即使在禁用第1个,第2个等按钮(最后一个复选框除外)之后,您仍然继续进行for循环。基本上,如果取消选中最后一个复选框,则始终会重新启用该按钮。尝试在for循环中添加break语句:

function assignDefect() {          
    var new_tc_arry = new Array();     
    var checkbox = document.getElementsByName('radSize1');    
    for(var i=0;i<checkbox.length;i++){   
        if(!checkbox[i].disabled && checkbox[i].checked){  
            var checkedbox = checkbox[i].value;            
            new_tc_arry.push(checkbox[i].value);    
            for(var i=0;i<new_tc_arry.length;i++){    
                console.log("new_tc_arry["+i+"] -->"+new_tc_arry[i]);    
                document.getElementById("OrphanbuttonId").disabled =true;   
            }
            break; //<---------------------------------------CHANGE HERE    
        }    
        else {    
        document.getElementById("OrphanbuttonId").disabled=false;                                                                                      
        }   
    }
}