0

编辑:我刚刚做了一个 jsfiddle 来演示这里的问题:http: //jsfiddle.net/GvjRd/3/

我有一个使用 JQuery UI 日期选择器的网络工具。它已经顺利运行了数周,但突然间它今天停止了工作。无论我在日历上选择哪一天/月/年,当我选择一天并调用alert(currentTime.getMonth());它时,都会返回“7”。它返回日/年就好了。

我开始单独测试日期选择器,制作了一个非常简单的页面:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <link type="text/css" href="ui-lightness/jquery-ui-1.8.21.custom.css" rel="stylesheet" />
    <link rel="stylesheet" href="demos.css">
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="jquery-ui-1.8.21.custom.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $("#datepicker").datepicker({
                onSelect : function(dateText, inst) {
                    var currentTime = new Date();
                    currentTime.setDate($("#datepicker").datepicker("getDate").getDate());
                    alert(currentTime.getMonth());
                }
            });
        });
    </script>

</head>
<body>
            Date:
            <input type="text" id="datepicker">
</body>

即使在此页面上,无论我选择什么日期/月份/年份组合,警报都会显示“7”。还有其他人有这个问题吗?

4

2 回答 2

0

JavaScript 中的月份是从零开始的,因此 7 = 第 8 个月或 8 月。

在您的示例中,您将 设置currentTime为今天,然后仅将该日期对象的日期更改为日历上选择的日期,而月份和年份保持不变。因此,currentTime.getMonth()将始终显示运行脚本的月份,而不是从日历中选择的日期。为此,请使用currentTime.setMonth($("#datepicker").datepicker("getDate").getMonth());

jsFiddle 示例

于 2012-08-01T20:25:55.743 回答
0

只要确保您没有currentTime提前设置变量:

$(function() {
                $("#datepicker").datepicker({
                    onSelect : function(dateText, inst) {
                        var currentTime;
                        currentTime = $("#datepicker").datepicker("getDate");
                        alert(currentTime.getMonth() + 1);
                    }
                });
            });​
于 2012-08-01T20:55:02.680 回答