无论值如何,复选框都选中了属性集

时间:2011-10-24 08:46:21

标签: php html browser

在家里试试:
编写一个表单以显示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中明确表达的内容相反。

1 个答案:

答案 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;
}