2013-05-30 2 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> 

Но теперь мне нужно заполнить значение из БД.

<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

не связан с вашим ответом но это 'имя =" 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; ?> 

Как вы видите, в коде, я изменю id к class.

А вот ваш выбор все Флажок (я не делал каких-либо изменений на нем):

<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 тоже ';)'. –

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) : ?> 
Смежные вопросы