1

目前此代码正在运行,但未达到预期:

$("#start_date").datepicker({
        dateFormat: 'yy-mm-dd',
        onSelect: function(_date, _datepicker)
        {
            var myDate = new Date(_date);
            myDate.setDate(myDate.getDate()+8);
            $('#estimated_hatching_date').text(myDate);
            alert( myDate);       
        }

        });

第一个问题是日期如何呈现。目前,上面的代码会提醒Fri Oct 01 2010 17:00:00 GMT-0700 (Pacific Daylight Time)。我希望输出只是日期,例如 09/06/2010。

第二个问题是,$('#estimated_hatching_date').text(myDate); 不改变文本。当该代码被触发时,没有任何改变。但是,如果我这样做:$('#estimated_hatching_date').text('myDate'); myDate 被放入#estimated_hatching_date div。

那么,如何仅输出日期并将#estimated_hatching_date div 中的“文本”替换为选择日期后+7 天的日期?

谢谢你,有钱

4

3 回答 3

3

jQuery UI Datepicker 有一个内置的formatDate函数。请@dottedquad,不要使用你自制的版本,日期数学和格式化比你想象的要难。角盒会让你把头发扯下来。

onSelect: function(_date, _datepicker) {
    var myDate = new Date(_date);
    var myText = $.datepicker.formatDate('dd-mm-yy',myDate);
    alert(myText);
}
于 2010-11-17T23:06:26.693 回答
1

我再次阅读了 ui datepicker 手册并弄清楚了。

    $("#start_date").datepicker({
    dateFormat: 'yy-mm-dd',
    onSelect: function(_date, _datepicker)
    {
        var myDate = new Date(_date);
        myDate.setDate(myDate.getDate()+8);
        var fullYear = myDate.getFullYear();
        var month = ((myDate.getMonth()+1) < 10) ? ('0' + (myDate.getMonth()+1)) : myDate.getMonth()+1;
        var day = (myDate.getDate() < 10) ? ('0' + myDate.getDate()) : myDate.getDate();
        var myNewDate = fullYear + '-' + day + '-' + month;

        $('#estimated_hatching_date').text(myNewDate);
        alert(myNewDate);
    }
    });

该代码按预期工作。还有其他人有什么想法可以以不同的方式完成这项工作吗?

-谢谢你,丰富

于 2010-09-07T23:11:24.827 回答
1

我遇到了同样的问题,并使用了带有隐藏输入的“altField”选项。隐藏输入的值始终根据“dateFormat”进行格式化

于 2010-09-30T11:34:37.103 回答