2014-10-07 112 views
0

下面是我的代码:启用和禁用复选框未禁用按钮

根据我的功能当我检查我的复选框按钮已被禁用,当我未选中该复选框按钮必须是启用。

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.** 
+0

首先设置一个警报,以查看在检查前两个复选框时是否触发该函数。否则检查迭代器 – 2014-10-07 09:50:21

+0

console.log(“new_tc_arry [”+ i +“] - >”+ new_tc_arry [i]); --->正在打印控制台上的选中的值... – 2014-10-07 09:53:02

回答

0

问题是因为即使在禁用1st,2nd等按钮(不包括最后一个复选框)之后,您仍继续进行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;                      
     } 
    } 
} 
+0

谢谢基兰:)它的工作... – 2014-10-07 11:09:10

+0

愉快:)如果你将它标记为答案,如果你满意,将不胜感激!干杯! – 2014-10-07 11:18:59