1

当并非所有字段都未正确填写并提交表单时,我一直在努力使用select 元素来保留用户输入。

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

使用输入元素,我可以使用这样的简单函数:

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

并像这样调用它:

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

并且价值正在被保留。但对于选择元素,它不是。

因此,如果可能的话,我将非常感谢有关如何使用自定义函数简单地保留用户输入的任何帮助。

4

5 回答 5

1

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

于 2012-11-06T10:41:45.953 回答
1

select 元素没有value设置默认选定选项的属性。相反,选项元素有一个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');?>">
于 2012-11-06T10:44:11.380 回答
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 '';
    }
}
于 2012-11-06T10:46:21.810 回答
0

您只能jquery-cookie用于读取、写入和删除 cookie。

你可以这样做:

  1. 创建会话 cookie:

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

     $.cookie('userInput'); // => "selectValue"
    
  3. 使用它,selected设置option.

或者对于$_POST函数:

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

<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>
于 2012-11-06T10:38:42.573 回答
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');?>">

于 2012-11-06T10:41:28.043 回答