您需要使用“已检查”属性。这应该有效。$optValue 是变量,'option' 属性被保存到。
for($i = 1; $i < 3; ++$i) $opchecked[$i] = ""; //Makes sure, that the variables are set.
$opchecked[$optValue] = 'checked'; //Sets the 'correct' option.
$html = "<form method='post'>
<p>Option</p>
<input type='radio' $opchecked[1] name='options' value='1'> Option1<br />
<input type='radio' $opchecked[2] name='options' value='2'> Option2<br />
</form>";
然而,我能想到的最优雅的方法是函数调用。
function getRadio($Value, $Text) {
$checked = (isset($_POST['animal']) && $Value == $_POST['animal']) ? "checked=checked" : "";
return "<input type='radio' $checked name='animal' value='$Value'>$Text</input><br />";
}
$html = "<form method='post'>
<p>Option</p>".
getRadio(1, "Dog").
getRadio(2, "Cat").
getRadio(3, "Bird").
</form>";
这个函数调用在第一次调用时不会选择任何东西(因为'$_POST['animal']' 还没有设置),但之后它会一直保持之前的动物'选中'。如果要提供“默认选择”,请添加另一个参数,如下所示:
function getRadio($Value, $Text, $default) {
if(!isset($_POST['animal']) && $default || isset($_POST['animal']) && $Value == $_POST['animal']) $checked = "checked=checked";
else $checked = "";
return "<input type='radio' $checked name='animal' value='$Value'>$Text</input><br />";
}