DropDown必须在POST后保留文本

时间:2010-01-09 12:03:30

标签: php html

我希望在Form从POST返回时保留DropDown文本。如何维持国家?

1 个答案:

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