1

我是一名 IT 新手,我真的对这个愚蠢的(看起来像?)问题感到困惑。我想要一个选择列表,默认情况下它显示为当前日期。但是在我提交页面(表单)并返回错误后,选择列表将显示最后提交的日期。

这是我的月份选项的 php 代码:

function MonthOptions()
{
    $months = array( "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" );
    for($i=1; $i<=12;$i++)
    {


        if($i==date("m"))
            print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
        if($i==$this->form['months'])
            print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
        else
            print '<option value="'.$i.'" >'.$months[$i-1].'</option>';

    }
}

和我的html:

<select name="months" class="date_option">
            <?php $this->MonthOptions() ?>
</select>

现在问题很奇怪,如果我在今天的月份(日或年)之后提交月份(日或年),我的功能正常工作。但是,如果我选择当前日期之前的月份(日或年),则在我提交页面后,选择选项会显示当前月份(日或年)..

4

1 回答 1

0

更改参数列表并使第二个if条件为else if. 第二个条件的意思是,只有当月份还没有提交时才应该选择当前月份。

if($i==$this->form['months']) {
     print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
} else if ($i==date("m")  && @empty($this->form['months'])) {
     print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
} else {
     print '<option value="'.$i.'" >'.$months[$i-1].'</option>';
}
于 2013-07-25T03:09:54.633 回答