0
<select name="year"><?=options(date('Y'),1900)?></select>
<select name="month"><?php echo date('m');?><?=options(1,12,'callback_month')?></select>
<select name="day"><?php echo date('d');?><?=options(1,31)?></select>  

PHP

function options($from,$to,$callback=false)
{
    $reverse=false;

    if($from>$to)
    {
        $tmp=$from;
        $from=$to;
        $to=$tmp;

        $reverse=true;
    }

    $return_string=array();
    for($i=$from;$i<=$to;$i++)
    {
        $return_string[]='<option value="'.$i.'">'.($callback?$callback($i):$i).'</option>';
    }
    if($reverse)
    {
        $return_string=array_reverse($return_string);
    }

    return join('',$return_string);
}

function callback_month($month)
{
    return date('m',mktime(0,0,0,$month,1));
}

我应该做什么才能在相应的下拉列表中获取当前月份和日期作为起始值,就像年份(2013 年)一样。

4

3 回答 3

2

尝试如下:

typeoptions()函数添加了新参数

<select name="year"><?=options('year' ,date('Y'),1900)?></select>
<select name="month"><?php echo date('m');?><?=options('month', 1,12,'callback_month')?></select>
<select name="day"><?php echo date('d');?><?=options('day', 1,31)?></select>  

<?php

function options($type, $from,$to,$callback=false)
{
    $reverse=false;

    switch ($type)
    {
        case "year":
            $current = date('Y');
            break;
        case "month":
            $current = date('m');
            break;
        case "day":
            $current = date('d');
            break;
    }

    if($from>$to)
    {
        $tmp=$from;
        $from=$to;
        $to=$tmp;

        $reverse=true;
    }

    $return_string=array();
    for($i=$from;$i<=$to;$i++)
    {
        $selected = ($i == $current ? " selected" : "");
        $return_string[]='<option value="'.$i.'" '.$selected.'>'.($callback?$callback($i):$i).'</option>';
    }
    if($reverse)
    {
        $return_string=array_reverse($return_string);
    }

    return join('',$return_string);
}

function callback_month($month)
{
    return date('m',mktime(0,0,0,$month,1));
}

?>
于 2013-08-31T13:17:17.890 回答
1

只需首先检索当前日期并使用 for 循环减去每年

于 2013-08-31T13:10:12.707 回答
1

使用selected属性:

例如

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="vw">VW</option>
  <option value="audi" selected>Audi</option>
</select>

在这里小提琴:http: //jsfiddle.net/dd3FU/

把它放在一个if statement.

享受!

于 2013-08-31T13:12:06.963 回答