Jquery ui jQueryUIDatePicker神奇地停止拉取正确的月份

Jquery ui jQueryUIDatePicker神奇地停止拉取正确的月份,jquery-ui,jquery-ui-datepicker,Jquery Ui,Jquery Ui Datepicker,编辑:我刚刚制作了一个JSFIDLE来演示这个问题: 我有一个使用jQueryUIDatePicker的web工具。几周来它一直工作顺利,但今天突然停止了工作。无论我在日历上选择哪一天/月/年,当我选择一天并调用alertcurrentTime.getMonth时;它返回'7'。它返回的日期/年份刚刚好 我开始单独测试datepicker,制作了一个非常简单的页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtm

编辑:我刚刚制作了一个JSFIDLE来演示这个问题:

我有一个使用jQueryUIDatePicker的web工具。几周来它一直工作顺利,但今天突然停止了工作。无论我在日历上选择哪一天/月/年,当我选择一天并调用alertcurrentTime.getMonth时;它返回'7'。它返回的日期/年份刚刚好

我开始单独测试datepicker,制作了一个非常简单的页面:

<!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”。还有其他人有这个问题吗?

JavaScript中的月份是以零为基础的,因此7=第8个月,即8月

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


只需确保不要提前设置currentTime变量:

$(function() {
                $("#datepicker").datepicker({
                    onSelect : function(dateText, inst) {
                        var currentTime;
                        currentTime = $("#datepicker").datepicker("getDate");
                        alert(currentTime.getMonth() + 1);
                    }
                });
            });​

我知道这一点。出于某种原因,无论用户选择的日期是哪一天,datepicker都会说选择的日期是在8月。您没有使用用户选择的日期,而是dateText。您正在使用var currentTime=new Date;。至少在你发布的提琴中。你是对的-我必须替换“currentTime.setDate$datepicker.datepickergetDate.getDate;”使用'currentTime=$this.datepicker'getDate';'我的回答无效吗?jsFiddle: