请求有关javascript的小帮助

请求有关javascript的小帮助,javascript,Javascript,下面的代码根据表单中选择的月份验证月份天数。月份值从一月到十二月开始,天数从1到31,年份从1900到2010。我正在尝试做一个非常小的更改,我想在三个下拉框中的每个框中添加第一个选项,一个空白的选择选项,或者例如一个破折号。因此,月份下拉列表的第一个选项是-而不是一月。为此,我在每个下拉列表中添加以下行 <option value=""> - </option> - 但通过添加此项,它无法正确显示1月和2月的天数(显示的天数比应显示的天数少1天)。这是一个javas

下面的代码根据表单中选择的月份验证月份天数。月份值从一月到十二月开始,天数从1到31,年份从1900到2010。我正在尝试做一个非常小的更改,我想在三个下拉框中的每个框中添加第一个选项,一个空白的选择选项,或者例如一个破折号。因此,月份下拉列表的第一个选项是-而不是一月。为此,我在每个下拉列表中添加以下行

<option value=""> - </option>
-
但通过添加此项,它无法正确显示1月和2月的天数(显示的天数比应显示的天数少1天)。这是一个javascript问题,但我不明白出了什么问题。如果你能帮我,我将不胜感激。 下面是用于填充表单的HTML、Javascript和php的完整代码

<?php
$monthOptions = '';
$dayOptions = '';
$yearOptions = '';
 for($month=1; $month<=12; $month++){
    $monthName = date("M", mktime(0, 0, 0, $month));
    $monthOptions .= "<option value=\"{$month}\">{$monthName}</option>\n";
} for($day=1; $day<=31; $day++){
    $dayOptions .= "<option value=\"{$day}\">{$day}</option>\n";
} for($year=1900; $year<=2010; $year++){
    $yearOptions .= "<option value=\"{$year}\">{$year}</option>\n";
}
?>
<html>
<head>
<script type="text/javascript">

function updateDays()
{
    //Create variables needed
    var monthSel = document.getElementById('month');
    var daySel   = document.getElementById('day');
    var yearSel  = document.getElementById('year');
    var monthVal = monthSel.value;
    var yearVal  = yearSel.value;

    //Determine the number of days in the month/year
    var daysInMonth = 31;
    if (monthVal==2){
        daysInMonth = (yearVal%4==0 && (yearVal%100!=0 || yearVal%400==0)) ? 29 : 28;
    } else if (monthVal==4 || monthVal==6 || monthVal==9 || monthVal==11) {
        daysInMonth = 30;
    }   
    //Add/remove options from days select list as needed
    if(daySel.options.length > daysInMonth){   //Remove excess days, if needed
        daySel.options.length = daysInMonth;
    } while (daySel.options.length != daysInMonth){   //Add additional days, if needed
        daySel.options[daySel.length] = new Option(daySel.length+1, daySel.length+1, false);
    }   
    return;
}

</script>
</head>
<body>
Birthdate:<br />
<select name="month" id="month" onchange="updateDays();">
<?php echo $monthOptions; ?>
</select>

<select name="day" id="day">
<?php echo $dayOptions; ?>
</select>

<select name="year" id="year" onchange="updateDays();">
<?php echo $yearOptions; ?>
</select>

</body>
</html>

函数updateDays()
{
//创建所需的变量
var monthSel=document.getElementById('month');
var daySel=document.getElementById('day');
var yearSel=document.getElementById('year');
var monthVal=月值;
var yearVal=yearSel.value;
//确定月/年中的天数
var daysInMonth=31;
如果(月=2){
daysInMonth=(yearVal%4==0&&(yearVal%100!=0 | | yearVal%400==0))?29:28;
}否则如果(monthVal==4 | | monthVal==6 | | monthVal==9 | | monthVal==11){
daysInMonth=30;
}   
//根据需要从天选择列表中添加/删除选项
如果(daySel.options.length>daysInMonth){//如果需要,删除多余的天数
daySel.options.length=daysInMonth;
}while(daySel.options.length!=daysInMonth){//如果需要,添加额外的天数
daySel.options[daySel.length]=新选项(daySel.length+1,daySel.length+1,false);
}   
返回;
}
出生日期:

感谢您的帮助。

为什么不改用optgroup:


...


顺便说一句,好名字

为什么不改用optgroup:


...


顺便说一句,好名字

不要重新发明控制盘,使用内置日期对象检查日期

function daysInMonth(year, month) {
  return (new Date(year, month, 0)).getDate();
}

您的代码中还有一个错误:“{”就在注释“如果需要,请删除多余的天数”之前。不要重新发明轮子,使用内置的日期对象检查日期

function daysInMonth(year, month) {
  return (new Date(year, month, 0)).getDate();
}

您的代码中还有一个错误:“{”前面的注释“如果需要,请删除多余的天数”不需要。

也许这就是您想要的


如果您有问题或需要修改,请告诉我,也许这就是您想要的

如果您有问题或需要修改,请告诉我