我是一个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>
现在问题非常奇怪,如果我在今天的月(日或年)之后提交月(日或年),我的功能正常。但如果我选择当前日期之前的月份(日或年),在我提交页面后,选择选项会显示当前月份(日期或年份)..
答案 0 :(得分: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>';
}