2013-05-30 24 views
-1

請看看這段代碼。我怎樣才能實現這個?全部選中/取消全部在foreach循環中

enter image description here

最近我做這樣的 -

<script type="text/javascript"> 
function CheckPowerAll() { 
    if (document.getElementById("PO_ALL").checked == true) { 

     document.getElementById("PO_PowerSteering").checked = true; 
     document.getElementById("PO_PowerMirrors").checked = true; 
    } else { 

     document.getElementById("PO_PowerSteering").checked = false; 
     document.getElementById("PO_PowerMirrors").checked = false; 
    } 
} 
</script> 

<tr> 
    <td><input name="PO_ALL" type="checkbox" id="PO_ALL" value="checkbox" onclick="CheckPowerAll()" /> 
Select all <span class="bold">Power Options</span> </td> 
    </tr> 
<tr> 
<td><table width="85%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td class="box2"> 

    <input name="PO_PowerSteering" type="checkbox" id="PO_PowerSteering" value="Power Steering" /> 
Power Steering<br /> 
    <input name="PO_PowerMirrors" type="checkbox" id="PO_PowerMirrors" value="Power Mirrors" /> 
Power Mirrors <br /></td> 
    </tr> 
</table></td> 
    </tr> 
<tr> 

但現在我需要填充從DB值。

<input name="PO_ALL" type="checkbox" id="PO_ALL" value="checkbox" onclick="CheckPowerAll()" /> 
Select all <span class="bold">Power Options</span> </td> 
    </tr> 
<tr> 
<td><table width="85%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td class="box2"> 

<?php 

$query = mysql_query("SELECT * FROM vehicle_poweroptions"); 
    while ($results[] = mysql_fetch_object ($query)); 
     array_pop ($results); 
     foreach ($results as $option) : ?> 

<input name="PO_PowerWindows" type="checkbox" id="PO_PowerWindows" value="<?php echo $option->id; ?>" /> 

<?php echo $option->type; ?><br /> 

<?php endforeach; ?> 

我該如何執行此操作?

+2

不關你的答案但這個'name =「PO_PowerWindows」'應該是'name =「PO_PowerWindows []」' –

+1

檢查此鏈接http://stackoverflow.com/questions/386281/how-to-implement-select-all-check-box- in-html – cartina

+0

@謝謝Cartina –

回答

3

Working jsFiddle Demo

不能有相同的ID多個元素。您必須更改您的foreach循環。 我已經完全刪除了id屬性。我將與name屬性工作:

<?php foreach ($results as $option) : ?> 
    <input 
     name="PO_PowerWindows" 
     type="checkbox" 
     value="<?php echo $option->id; ?>" 
    /> 
<?php endforeach; ?> 

正如你在代碼中看到,我改變idclass

,這是你選擇的所有複選框(我沒有做出任何更改):

<input name="PO_ALL" type="checkbox" id="PO_ALL" value="checkbox" onclick="CheckPowerAll()" /> 

和你的函數將是這樣的:

function CheckPowerAll() { 
    var elements = document.getElementsByName("PO_PowerWindows"); 
    var l = elements.length; 

    if (document.getElementById("PO_ALL").checked) { 
     for (var i = 0; i < l; i++) { 
      elements[i].checked = true; 
     } 
    } else { 
     for (var i = 0; i < l; i++) { 
      elements[i].checked = false; 
     } 
    } 
} 
+0

感謝NOX提供了這麼好的幫助 –

+0

@ThomasTkr不客氣,我也改變了一點我的功能,以使它與舊版本IE兼容'')'。 – 2013-05-30 05:54:14

1
<input name="PO_PowerWindows[]" type="checkbox" id="PO_PowerWindows" value="<?php echo $option->id; ?>" checked="checked"/> 
1

只需添加

array_pop ($results); ?> 
    <input name="PO_ALL" type="checkbox" id="PO_ALL" value="checkbox" onclick="CheckPowerAll()" /> 
<?php foreach ($results as $option) : ?>