【问题标题】:Remembering the selected option after page refreshed页面刷新后记住选择的选项
【发布时间】:2013-06-18 17:35:19
【问题描述】:

我有一个表单,它从用户获取鞋子的最小尺寸和最大尺寸,并通过 POST 方法在同一页面上打印所有具有此尺寸范围的鞋子。

表单操作指向同一页面,因此页面有点刷新并为 POST 的变量获取新值。

我的问题是默认选择选项(例如)

<option value="49.0" selected="selected">49.0</option>

在页面刷新后仍然被选中,因此它打印 X 尺寸的结果,但选择的选项是 49.0

我的问题是如何将默认选项更改为用户在提交表单之前选择的选项,或者换句话说,更改为 $_POST['minSize'] 和 $_POST['maxSize']

【问题讨论】:

  • 您的解决方案在于 Javascript cookie。
  • 您的选项列表是硬编码的还是使用 PHP 循环生成的?

标签: php html


【解决方案1】:

您可以为此使用 JavaScript:

<script type="text/javascript">
  document.getElementById('idofselectlist').value = "<?php echo $_POST['minSize'];?>";
</script>

<script type="text/javascript">
  document.getElementById('idofselectlist').value = "<?php echo $_POST['maxSize'];?>";
</script>

【讨论】:

  • 谢谢!它正在工作。等待时间过后,我会接受您的答复。
【解决方案2】:

如果您已经拥有 POST 数组中的值,那么您可以使用内联 php 构建表单输入,以回显用户选择的值。如果未设置 POST,您可以在页面顶部放置一个条件 a,将值设置为默认值。

//check if max size is set via post
if(!isset($_POST['maxsize'])){
    $maxSize = 10;
}else{
    $maxSize = $_POST['maxsize'];
}

//check if min size is set via post
if(!isset($_POST['maxsize'])){
    $minSize= 1;
}else{
    $maxSize = $_POST['minsize'];
}

然后与你的 html 内联,使用这个

<form action="form_handle.php">
  Min shoe size: <input type="text" name="min" value="<?=$minSize; ?>"><br>
  Max shoe size: <input type="text" name="max" value="<?=$maxSize; ?>"><br>
  <input type="submit" value="Submit form">
</form>

我使用的是简写 &lt;?="hello" ?&gt;,它与 &lt;?php echo "hello" ?&gt; 相同

【讨论】:

  • 感谢您的详细回放,它是正确且有效的。另一个答案已在您之前发布,所以我会接受。再次感谢您。
  • 没问题。使用内联 php 构建表单是一种非常简单的动态构建页面的方法
【解决方案3】:

它不是最优雅的,但它确实有效

    <?php if(isset($_POST['min'])) $selected = true; ?>
<form action="test.php" method="POST">
<select name="min">
    <option value="49.0" <?php if(isset($selected) && $selected && $_POST['min']=='49.0') echo 'selected="selected"'?>>49.0</option>
    <option value="48.0" <?php if(isset($selected) && $selected && $_POST['min']=='48.0') echo 'selected="selected"'?>>48.0</option>
    <option value="47.0" <?php if(isset($selected) && $selected && $_POST['min']=='47.0') echo 'selected="selected"'?>>47.0</option>
    <option value="46.0" <?php if(isset($selected) && $selected && $_POST['min']=='46.0') echo 'selected="selected"'?>>46.0</option>
    <option value="45.0" <?php if(isset($selected) && $selected && $_POST['min']=='45.0') echo 'selected="selected"'?>>45.0</option>
</select>
<input type="submit" value="Press">
</form>

【讨论】:

    【解决方案4】:

    这会生成&lt;option&gt;&lt;/option&gt; 元素并在需要时添加“已选择”。这使您不必使用您的客户可能会阻止的 javascript。

    $minSize = ( isset($_REQUEST['minSize']) ) ? $_REQUEST['minSize'] : 10;
    $maxSize = ( isset($_REQUEST['maxSize']) ) ? $_REQUEST['maxSize'] : 50;
    
    echo "<select name=\"minSize\">\n";
    for ($i=10;$i<=50;i++)
    {
        echo "\t<option value=\"".$i."\"".(($i==$minSize) ? " selected" : "").">".$i."</option>\n";
    }
    echo "</select>\n<select name=\"maxSize\">\n";
    for ($i=10;$i<=50;i++)
    {
        echo "\t<option value=\"".$i."\"".(($i==$maxSize) ? " selected" : "").">".$i."</option>\n";
    }
    echo "</select>\n";
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2011-02-27
      • 2021-03-07
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多