2013-08-05 33 views
0

JavaScript代碼選擇在javascript所有複選框 - 使用不同的值的陣列,用於複選框

function toggle(source) { 

    console.log('here'); 
    checkboxes = document.getElementsByName('checkbox[]'); 

    for(var i=0, n=checkboxes.length;i<n;i++) { 
     checkboxes[i].checked = source.checked; 
    } 
} 

PHP代碼動態

<td><input name="checkbox[<?php echo $row['id']?>]" type="checkbox" id="checkbox" value="<?php echo $row['id']; ?>"></td> 

生成所有複選框根據PHP代碼 上面生成的所有的名字的值動態。 以上Javascript代碼無法選中所有複選框

請幫忙!


我關鍵的問題很長的研究終於找到了雁後 - 選擇&檢查都具有不同的名稱,值,ID和同類型的複選框。

function toggle (source) { 
var checkboxes; 
var len = document.frm1.elements.length; 
var x = document.getElementById('all'); 

for(var i = 0 ; i< len;i++){ 

    if(document.frm1.elements[i].type == "checkbox") 
     { 

     checkboxes = document.frm1.elements[i]; 
     if(x.checked == true) 
     { 
      document.frm1.elements[i].checked = true; 
     } 
     else 
     { 
      document.frm1.elements[i].checked = false; 
     } 
      } 

    /*if(isAllCheck == false){ 
     document.frm1.elements[i].checked = "true"; 
     //alert("it is false"); 
    }else{ 
     document.frm1.elements[i].checked = "false"; 
     //alert("it is true"); 
    } 
    isAllCheck = !isAllCheck; */ 


      } 
    console.log(checkboxes); 
    for(var i=0, n=checkboxes.length;i<n;i++) { 

checkboxes[i].checked = source.checked; 

     } 

我希望這會幫助別人......

+0

檢查生成html並粘貼到此處,並通過該代碼一件事,你將有複選框重複的ID,ID =「複選框」是靜態的。這是非法的html –

回答

2
var inputs = document.getElementsByTagName("input"); 
var checkboxes=[]; 
for(var i = 0; i < inputs.length; i++) { 
if(inputs[i].type == "checkbox") { 
    checkboxes.push(inputs[i]); 
} 
} 

如果你想檢查所有的人,那麼你將需要添加if條件裏面的線inputs[i].checked = true;

提示:沒有爲複選框分配相同的ID!

+0

謝謝!你的回答幫了我很多! – Rohit

0

這不會以這種方式工作,因爲沒有你的複選框的名稱爲「複選框[]」。您可以通過給他們一個類並使用getElementsByClassName函數來獲取所有複選框。所以,你在哪裏得到的複選框行應該是這樣的:

var checkboxes = document.getElementsByClassname('yourClassName'); 

而在HTML你剛纔指定的複選框類「yourClassName」。

請注意,某些舊瀏覽器的getElementsByClassname is not supported

+0

謝謝! 是否有其他簡單和通用的解決方案,兼容所有瀏覽器 – Rohit

+0

您可以將所有複選框的名稱設置爲'yourName',然後使用'document.getElementsByName('yourName');'獲取它們。 –

0

你的HTML是導致

<TD> <輸入名稱= 「複選框[1]」 類型= 「複選框」 ID = 「複選框」 值= 「1」 > </TD >

這是不一樣

<TD> <輸入名稱= 「複選框[]」 類型= 「複選框」 ID = 「複選框」 值= 「1」 > </TD >

來讓PHP自動選擇所有複選框您需要添加

<TD> <輸入名稱= 「複選框[]」 類型= 「複選框」 ID = 「複選框」 值= 「1」 檢查> </TD >

+0

你可以請告訴我的JavaScript代碼來識別最後檢查的值..... – Rohit

0

使用jQuery,你應該能夠做到像

checkboxes = $('input[name^="checkbox"]'); 

東西拿到這裏的名字與「複選框」

+0

我正在尋找特定的JavaScript解決方案! – Rohit

0

分配類=「切換」開始所有複選框所有輸入元素,你想要與源切換。

var elemsToggle = document.getElementsByClassName("toggle"); 
    for(var i = 0; i < inputs.length; i++) { 
    elemsToggle[i].checked = source.checked; 
    } 

此代碼將檢查或取消選中具有class =「toggle」的所有複選框,具體取決於源複選框的狀態。

1
checked = false; 
function ToggleAll(source) { 
checkboxes = document.getElementsByName('course[]'); 
for(var i=0, n=checkboxes.length;i<n;i++) { 
checkboxes[i].checked = source.checked; 
} 
} 

HTML: 
<input type='checkbox' name='checkall' onclick='ToggleAll(this);'> Select All 
<input type='checkbox' id = 'course' name='course[]'>Val1 
<input type='checkbox' id = 'course' name='course[]'>Val2 
0

您可以使用querySelectorAll

function toggle_checkbox(name) { 
     checkboxes = document.querySelectorAll("input[name^='"+ name +"[']"); 

     for (var i = 0, n = checkboxes.length; i < n; i++) { 
      checkboxes[i].checked = source.checked; 
     } 
}