首页 文章

在刷新页面后记住所选选项

提问于
浏览
4

我有一个从用户最小尺寸和鞋子最大尺寸得到的表格,并通过POST方法在同一页面上打印所有这种尺码范围的鞋子 .

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

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

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

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

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

4 回答

  • 1

    它不是最优雅但它的工作原理

    <?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>
    
  • 0

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

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

    我正在使用速记 <?="hello" ?> ,这与 <?php echo "hello" ?> 相同

  • 1

    这会生成 <option></option> 元素,如果它们是需要的话,则添加"selected" . 这使您不必使用客户可能阻止的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";
    
    ?>
    
  • 4

    您可以使用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>
    

相关问题