2014-10-07 154 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