Попробуйте это дома:
Напишите форму для отображения списка флажков в PHP:
$checkboxes = array('one' => 1, 'two' => 2, 'three' => 3);
$html = "<html><body><form name=\"myForm\" action=\"this\" method=\"post\"><ul>Check Test";
foreach ($checkboxes as $id => $value)
{
$checkVal = (isset($_POST['check_test'][$id])) ? 'true' : 'false';
$checkList = "<li><input type=\"checkbox\" name=\"check_test[]\" id=\"$id\"
value =\"$value\" checked=\"$checkVal\" />$name = $value</li>\n";
}
$checkList .= "<input type=\"submit\" value=\"Submit\">";
echo $html.$checkList."</ul></body></html>";
Вы обнаружите, что независимо от того, что вы положили в назначение $ checkVal, когда вы нажмете submit, все ваши флажки будут отмечены. Мой обходной путь - расширить переменную $ checkVal, чтобы присвоить всему статусу «selected =» значение «что-то или ничего». Я просто удивлен, что Firefox (точнее, Iceweasel) только смотрит, установлен ли атрибут вообще. Зачем даже иметь его, если то, к чему оно установлено, не имеет значения?
Посмотрите на источник HTML. Выбранный атрибут будет отображать все, что вы положили в переменную checkval. Спецификация DOM гласит:
checkboxObject.checked = true | false
Вот мой вывод:
<ul><li><input type="checkbox" name="check_test[]" id="one"
value ="1" checked="false" />one= 1</li>
<li><input type="checkbox" name="check_test[]" id="two"
value ="2" checked="false" />two= 2</li>
<li><input type="checkbox" name="check_test[]" id="three"
value ="3" checked="false" />three= 3</li>
И о чудо! Каждый флажок отмечен. Вопреки тому, что я явно выразил в HTML.