DropDown должен сохранять текст после POST - PullRequest
0 голосов
/ 09 января 2010

Я хочу, чтобы текст DropDown сохранялся при возврате формы из POST. Как сохранить состояние?

1 Ответ

4 голосов
/ 09 января 2010

Необходимо установить атрибут 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'] содержит 'egg'. Вы можете создать помощника, который создаст для вас элементы option, например

<?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 за один раз, вместо того, чтобы вызывать его для каждого параметра в отдельности. Я оставляю это на ваше усмотрение, чтобы построить это.

Если вы не строите параметры Select динамически с помощью PHP, вы можете выбрать этот параметр, добавив на свою страницу небольшой javascript, в котором вы передадите значение, установленное для favourfood, из массива $ _POST и предложите сценарию выбрать параметр. См. Ответы на этот вопрос для возможного кода .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...