使用PHP保留HTML select元素中的用户选择

时间:2012-11-06 10:36:45

标签: php select input

当没有正确填写所有字段并提交表单时,我一直在使用选择元素来保护用户输入。

<form action="" method="post">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
    <select name="cars">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
  <input type="submit" value="Submit">
</form>

使用input元素,我可以使用这样一个简单的函数:

function input_value($x){
    if(isset($_POST[$x])) {
    echo $_POST[$x];
    }else{
    echo '';
    }
}

并像这样打电话:

<input type="text" name="fname" value="<?php input_value('fname');?>">

并保留值。但是使用select元素,不是。

所以如果可能的话,我可以使用自定义函数简单地保存用户输入的任何帮助都非常感激。

5 个答案:

答案 0 :(得分:1)

这不起作用,因为您不能只为选择输入设置值。您需要将"selected"属性添加到之前选中的<option>

答案 1 :(得分:1)

select元素没有value属性来设置默认的选定选项。相反,option元素具有selected属性。如果将它包含在选项元素中,则会显示“嘿,我已被选中”。 ;)

我建议您使用echo替换input_value()函数中的return语句:

function input_value($x){
    if (isset($_POST[$x])) {
        return $_POST[$x];
    }
    else {
        return '';
    }
}

这使您可以执行以下操作:

<select name="cars">
    <option value="volvo" <?php echo (input_value('cars') == 'volvo') ? 'selected="selected"' : ''; ?>>Volvo</option>
    <option value="saab" <?php echo (input_value('cars') == 'saab') ? 'selected="selected"' : ''; ?>>Saab</option>
    <option value="mercedes" <?php echo (input_value('cars') == 'mercedes') ? 'selected="selected"' : ''; ?>>Mercedes</option>
    <option value="audi" <?php echo (input_value('cars') == 'audi') ? 'selected="selected"' : ''; ?>>Audi</option>
</select>

不要忘记在{普通'文本字段中echo函数的结果:

<input type="text" name="fname" value="<?php echo input_value('fname');?>">

答案 2 :(得分:1)

在选择框中尝试此操作

<option value="volvo" <?php echo (input_value('cars') == 'volvo') ? 'selected="selected"' : ''; ?> >Volvo</option>

编辑:

input_value($x)功能修改为

function input_value($x){
    if (isset($_POST[$x])) {
        return $_POST[$x];
    } else {
        return '';
    }
}

答案 3 :(得分:0)

您可以使用jquery-cookie来阅读,编写和删除Cookie。

你可以这样做:

  1. 创建会话cookie:

    $.cookie('userInput', 'selectValue');
    
  2. 阅读Cookie:

    $.cookie('userInput'); // => "selectValue"
    
  3. 使用它,设置selected的{​​{1}}属性。

  4. option函数:

    您需要以这种方式使用代码:

    $_POST

答案 4 :(得分:0)

请试试这个

function input_value($x){
        if(isset($_POST[$x])) {
        return $_POST[$x];
        }else{
        return null;
        }
    }

你可以像这样打电话

<input type="text" name="fname" value="<?php echo input_value('fname');?>">