使URL变量覆盖选择标签中的默认选择


HTML - Make URL variable overwrite default selection in select tag

我有一个带有出生日期选择标签的表单。日期和月份默认为第一个选项(1日和1月),这是可以的。对于年份,我使用selected="selected"表示1975年,因为这是我的用户的平均年龄。

我想做的是通过在URL中传递变量来覆盖这个默认的年份值。

例如:

www.domain.com ? dob_day = 14, dob_month = july& dob_year = 1980

原因是我想发送一封电子邮件,并预先填充他们填写的字段。

当我查看源代码时,现在发生的是1975年被选中,在变量中传递的年份

实现上述目标的最佳方法是什么?

要覆盖默认值,可以使用下面的代码从URL检索变量:

$dob_year = $_GET["dob_year"];
$dob_day = $_GET["dob_day"];
$dob_month = $_GET["doby_month"];

然后对于每个选择下拉菜单,你可以这样做:

echo "<select id = '"dob_month'">";
for($i=1;$i<=12;$i++)
{
    $sel = $i==$dob_month ? "selected" : "";
    echo "<option value='"$i'" $sel>$i</option>";
}
echo "</select>";

我认为最快和最干净的方法是使用一个简短的javascript设置适当的值,当页面加载

假设你像这样读取数据:

$selectedYear = isset($_GET['dob_year']) ? intval($_GET['dob_year']) : null;

然后是这样的select block

<select id="selectedYear" name="selectedYear" class="combobox">
    ...
</select>

你可以把它添加到页面底部:

<?php if ($selectedYear) { ?>
    <script type="text/javascript">
        window.onload = function() { document.getElementById('selectedYear').value = <?php echo $selectedYear; ?>; }
    </script>
<?php } ?>
相关文章: