HTML选择最后选择的下拉值?

时间:2011-12-31 08:30:25

标签: php html

我目前正在处理注册表格,具体来说,如果注册验证中存在错误,我正在处理重新显示用户输入的任何信息。

通常情况下,当用户点击“提交”时 - 如果出现错误,页面会刷新并回显出来并重新显示表单。问题是某些字段中有时存在真正有效的信息,通过重新分配该数据,可以使用value属性和isset()函数重新显示它(如果当然数据已经过POST,其中在这种情况下它有):

<input type="email" name="anEmail" 
                   value=" <?php echo (isset($email)) ? $email : false; ?>" />

适用于<input>元素,但通过<select>元素的下拉列表可以实现相同的效果吗?

我最初尝试过:

<select name="region" 
       value="<?php echo (isset($region)) ? $region : 'Auckland'; ?>" > 

<!-- with 'Auckland' being the default value of the list -->

it doesn't seem like value="" <select>是{{1}}标记的有效属性。

关于如何实现这一目标的任何想法?干杯。

6 个答案:

答案 0 :(得分:2)

function build_select($name, array $options = NULL, $selected = NULL)
{
    foreach($options as $value => $option)
        $return .= ($value != $selected)? '<option value="'.$value.'">'.$option.'</option>': '<option selected="selected" value="'.$value.'">'.$option.'</option>';

    return '<select name="'.$name.'">'.$return.'</select>';
}

echo build_select('region', array('Lorem' => 'Ipsum', 'Auckland' => 'Auckland', 'Ipsum' => 'Lorem'), 'Auckland');

HTML

<select name="region">
<option value="Lorem">Ipsum</option>
<option selected="selected" value="Auckland">Auckland</option>
<option value="Ipsum">Lorem</option>
</select>

答案 1 :(得分:1)

我选择=“选中”,我想。或者只是“选中”。

快速举例说明如何实现:

case "value0":
    $selected0 = "selected";
    break;
case "value1":
    $selected1 = "selected";
    break;

<option value="value0" <?php echo $selected0;?>></option>
<option value="value1" <?php echo $selected1;?>></option>

答案 2 :(得分:1)

您必须将selected="selected"添加到特定选项。像这样:

<select name="region">
    <option value="opt1">Option 1</option>
    <option value="opt2" selected="selected">Option 2</option>
    <option value="opt3">Option 3</option>
    <option value="opt4">Option 4</option>
</select>

使用此代码选择选项2

在pehe中你必须检查特定选项是否等于输入。

<option value="opt4"<?php if ($region == "opt2"){ echo ' selected="selected"'; } ?>>Option 4</option>

答案 3 :(得分:1)

如果选项数量不多,您可以采用以下方法: 在每个选项中都放了代码:

<select>
<option selected="<?php echo (isset($region) && $region=='Volvo') ? $region : ''; ?>">Volvo</option>
<option selected="<?php echo (isset($region) && $region=='Saab') ? $region : ''; ?>">Saab</option>
<option selected="<?php echo (isset($region) && $region=='Mercedes') ? $region : ''; ?>">Mercedes</option>
<option selected="<?php echo (isset($region) && $region=='Audi') ? $region : ''; ?>">Audi</option>
</select>

但如果选项数量很多,则需要编写javascript代码..

if(isset($region))
{
echo '
<script>$("#id option").each(function()
{
    if($(this).val()=='.$region.')
    $(this).attr("selected", "selected");
});
</script>';
}

答案 4 :(得分:1)

function __selected($ctrlName,$value)
{
    if(isset($_REQUEST[$ctrlName]) && trim($_REQUEST[$ctrlName]) == trim($value))
        return "selected='selected'";
    else
        return false;
}

使用

<select name="cmbCondition">
                                    <option value="Excellent" <?php echo __selected('cmbCondition',"Excellent")?>>Excellent</option>
                                    <option value="Good" <?php echo __selected('cmbCondition',"Good")?>>Good</option>
                                    <option value="Poor" <?php echo __selected('cmbCondition',"Poor")?>>Poor</option>          
                                </select>

答案 5 :(得分:0)

基于数组动态创建选项。 用法应该非常简单。

<?php

function rennder_options($options = array(), $selection = null) {

    if (!is_array($options)) {
        return false;
    }
    $result = "";
    foreach($option as $option) {
        $option_str =  '<option value="'.$option['value'].'"';
        if ($selection !== null && $option['value'] == $selection){
            $option_str .= ' selected="selected"';
        }
        $option_str .= '>'.$option['name'].'</option>';
        $result .= $option_str;
    }
    return result;
}

$options = array(
    array( "value" => "opt1", "name" => "Option 1" )
    array( "value" => "opt2", "name" => "Option 2" ),
    array( "value" => "opt3", "name" => "Option 3" ),
);

?>
<select name="region">
<?php echo render_options($options, $_POST['region']); ?>
</select>