从jquery datepicker中提取月份

时间:2011-07-18 12:54:00

标签: jquery jquery-ui-datepicker

我有一个jquery datepicker,它以dd / mm / yyyy格式化日期。当有人输入日期,选择日期和加载时,我需要显示月份名称。我很难得到这个月。 myDate是附加到datepicker的文本框。我有这个:

var date = new Date($("#myDate").val());
alert(date.getDate());
alert(date.getMonth());
alert(date.getDay());
alert(date.getYear());

当我以18/07/2011的日期运行时,我的月份为5,当天为4,日期为7,年份为112,这都非常奇怪。我究竟做错了什么?我需要做的就是动态地将月份标签更改为使用datepicker选择/输入的月份,即7月...

2 个答案:

答案 0 :(得分:3)

要从datepicker获取日期,您应该使用$("#myDate").datepicker("getDate")。虽然你目前正在做的是构建一个JavaScript Date对象,它可能以错误的方式解释.val()。

答案 1 :(得分:1)

使用

$('#myDate').datepicker('getDate')

以更安全的方式获取JavaScript日期对象。此外,getMonth()将返回零索引的月份,因此7月将返回为“6”。要返回全年,您应该使用:.getFullYear()

javascript“new Date()”没有以正确的日期格式解析它。如果您正确设置了日期选择器的日期格式,那么当您使用它的'getDate'方法时,窗口小部件将为您完成工作。

您的代码将成为:

var date = $("#myDate").datepicker('getDate');
alert(date.getDate());         // Day of the month
alert(date.getMonth());        // Month with a zero index
alert(date.getDay());          // Day of the week
alert(date.getFullYear());     // The "full" year, e.g. 2011

//更新了选择列表的解决方案

从下拉列表中选择正确的值很大程度上取决于您如何设置值。即如果值为:

<select id="MySelect">
  <option value="1">Jan</option>
</select>

然后你可以这样做:

$('#MySelect').val((date.getMonth() + 1));

这将选择指定的月份。但是,如果您的值是月份名称的某种变化,即:

<select id="MySelect">
  <option value="Jan">Jan</option>
</select>

然后你需要一个函数来映射从月号到它的名字,如:

var months = ['Jan', 'Feb', 'Mar', ...etc }

function getMonthShortName(month) {
    return months[month];
}

$('#MySelect').val(getMonthShortName(date.getMonth()));