表单提交后保留下拉选择

时间:2017-01-22 16:00:23

标签: javascript php forms

我有一个带有多个下拉菜单字段的HTML表单,这些字段可以填充循环数组,以便在多个字段之间共享选择数据。

<label>Techician:</label>
<select name="rcvTech" id="rcvTech">
    <option value="0">--Select Technician--</option>
    <?php
        foreach ($tech as $t) {
            echo "<option value='$t'>$t</option>";
        }
    ?>
</select>

如果在提交表单时保留所有下拉菜单的选定数据,我该怎么办?这样,如果有任何错误需要更正,用户就不会有重复选择每个字段的繁琐工作?

解决方案改编自user5748817的帖子:

<label>Receiving techician:</label>
<select name="rcvTech" id="rcvTech">
    <option value="0" selected="selected">--Select Technician--</option>
    <?php
        foreach ($tech as $t) {
            echo "<option value='$t'";
                if (isset($_POST['submitted']) && $_POST['rcvTech'] == $t){
                    echo " selected";
                }
            echo ">$t</option>";
        }
    ?>
</select>

1 个答案:

答案 0 :(得分:3)

为了能够处理多个选定的选项,您需要将数据作为数组收集。因此,将选择名称更改为rcvTech []。验证提交的数据时,在会话中收集它以获取提交的值。

<label>Techician:</label>
<select name="rcvTech[]" id="rcvTech">
    <option value="0">--Select Technician--</option>
    <?php
        foreach ($tech as $t) {
            if (in_array($t, $_SESSION['submitted'])) $selected=" selected";
            echo "<option value='".$t."' ".$selected.">".$t."</option>";
        }
    ?>
</select>