Я хочу, чтобы текст DropDown сохранялся, когда Форма возвращается из POST. Как поддерживать состояние?
Вы должны установить 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
либо будет содержать числовой индекс элемента option, либо value
если этот атрибут указан. В приведенном выше примере $_POST['favoritefood']
содержит «яйцо». Вы можете создать помощника, который создает для вас элементы опции, например
<?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, вы можете выбрать этот вариант, добавив на свою страницу небольшой javascript, который передал значение, установленное для любимого напитка из массива $ _POST, и чтобы сценарий выбрал эту опцию. См. Ответы на этот вопрос для возможного кода .