我希望在Form从POST返回时保留DropDown文本。如何维持国家?
答案 0 :(得分:4)
您必须在selected
元素上设置option
属性
见http://reference.sitepoint.com/html/option/selected
<form>
<label for="favoritefood">Favorite food</label>
<select name="favoritefood" id="favoritefood">
<option value="che">Cheese</option>
<option value="egg" selected="selected">Egg</option>
<option value="cab">Cabbage</option>
</select>
</form>
如果指定了此属性,$_POST
数组将包含选项元素的数字索引或value
。在上面的示例中,$_POST['favoritefood']
包含“egg”。您可以构建一个帮助程序,为您构建选项元素,例如
<?php
class HtmlHelper
{
public static function option($value, $label, $selected)
{
$selected = ($value === $selected) ? ' selected="selected"' : '';
return sprintf('<option value="%s"%s>%s</option>%s',
$value, $selected, $label, PHP_EOL);
}
}
// Usage to get the above Selectbox options
echo HtmlHelper::option('che', 'Cheese', $_POST['favoritefood']),
HtmlHelper::option('egg', 'Egg', $_POST['favoritefood']),
HtmlHelper::option('cab', 'Cabbage', $_POST['favoritefood']);
当然,拥有一个Selectbox助手更聪明,你可以一次性传递选项和POST数组,而不是分别为每个选项调用它。我把它留给你来构建它。
如果您没有使用PHP动态构建Select选项,则可以通过向页面添加一个小javascript来选择该选项,您可以从$ _POST数组中传递favoritefood的值集并让脚本选择该选项。 See the answers to this question for possible code