在家里试试:
编写一个表单以显示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中分配什么,当你点击提交时,你的复选框都会被检查。我的解决方法是扩展$ checkVal变量以将整个“checked ='”状态设置为任何东西或者什么都没有。我很惊讶Firefox(而不是Iceweasel)只想查看该属性是否设置完毕。为什么即使拥有它也无关紧要呢?
查看源代码html。 selected属性将显示您放入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中明确表达的内容相反。
答案 0 :(得分:2)
忽略了错误。如果检查属性存在,则选中该框。
foreach ($checkboxes as $id => $value)
{
$checkVal = (isset($_POST['check_test'][$id])) ? 'checked="checked"' : '';
$checkList = "<li><input type=\"checkbox\" name=\"check_test[]\" id=\"$id\"
value =\"$value\" ".$checkVal." />$name = $value</li>\n;
}