2

早安帮派。

我有一个使用 javscript Date 对象预先填充的 jQuery Datepicker 对象,并且我让 getMonth() 返回 50 作为月份,而不是 5。这在 2012 年 4 月 27 日之前一直有效。

这是代码:

$(document).ready(function(){

$('#datepicker1').attr('readonly', 'readonly');

var press_date = new Date(); //This is the Date object that you're getting from external source

$('#datepicker1').val(press_date.getFullYear()+'-'
                     +press_date.getMonth()+1+'-'
                     +press_date.getDate());

$('#datepicker1').datepicker({
                     showAnim:'slide',showOn: 'button',
                     dateFormat : 'yy-mm-dd',
                     buttonImage: 'images/calendar.jpg',
                     buttonImageOnly: true,onSelect: function(dateText, inst) {} 
                    });
$('#datepicker').attr('readonly', 'readonly');

$('#datepicker').datepicker({
                     showAnim:'slide',showOn: 'button',
                     dateFormat : 'yy-mm-dd',
                     buttonImage: 'images/calendar.jpg',
                     buttonImageOnly: true,onSelect: function(dateText, inst) {} 
                    });
});

我的猜测是这是一个很容易解决的问题,但我还没有在网上看到任何解释它的东西。

4

2 回答 2

3

问题是您的表达式中的 x.getMonth()+1 。由于您要连接字符串,因此解析器会感到困惑。您可以将 x.getMonth()+1 括在括号中,或者只是将该计算移到字符串连接之外:

例如,用括号括起来:

x.getFullYear()+'-'+(x.getMonth()+1)+'-'+x.getDate()

更新:为了得到月份值零填充,我会明确地将计算移到它自己的行以使其清楚:

month = x.getMonth() + 1; 
monthString = month < 9 ? '0' + month : month; 
dbDate = x.getFullYear() + '-' + monthString + '-' + x.getDate();
于 2012-06-25T15:40:34.593 回答
0

将代码中将月份加一的部分括在括号中,以便 JavaScript 在数学意义上解释 + 而不是字符串连接:

$('#datepicker1').val(press_date.getFullYear() + '-' + 
                     (press_date.getMonth() + 1) + '-' + 
                     press_date.getDate());

http://jsfiddle.net/mblase75/B53u3/

于 2012-06-25T15:40:18.790 回答