0

我有来自JSFiddle的这段代码。

$(function() {
    var datefields = $("input[type='date']");
    // Log starting markup
    datefields.each(function() {
        var $el = $(this), $parent = $el.parent();
        $parent.next().text($parent.html());

    });

    if (!Modernizr.inputtypes.date) {
        datefields    
            .datepicker()
            .each(function() {
                // Turn ISO 8601 date string into US date string
                var dateParts = this.value.split("-"),
                    date = $.map(dateParts, function (el) {
                        return !isNaN(parseInt(el, 10)) ? el : null;
                    }).length === 3
                        ? new Date(dateParts[0], dateParts[1], dateParts[2])
                        : null;
                this.type = "text";
                this.value = !date ? "" :
                    date.getMonth() + "/" +
                    date.getDate() + "/" +
                    date.getFullYear();
            });
    }

    // Log final results
    datefields.each(function() {
        var $el = $(this), $parent = $el.parent();
        $parent.next().next().text($el.val())
        $parent.next().next().next().text($el.attr("value"));
        $parent.next().next().next().next().text($el.prop("value"));
        $parent.next().next().next().next().next().text(this.getAttribute("value"));
    });
});

我不知道如何让它正确地将日期转换为 MM/dd/yyyy 格式。对于非 html5 日期浏览器,它的日期为 2012-12-28,日期为 0/28/2013。它适用于 html5 浏览器。如果我用正确格式的日期字符串替换 date.getmonth()... 等,它会正确显示。所以我知道这与 getMonth() 和 getFullYear() 返回的值有关。任何帮助,将不胜感激。

4

1 回答 1

1

getMonth()在 JavaScript 中是从零开始的。创建时需要将值减 1:

    ? new Date(dateParts[0], parseInt(dateParts[1]) - 1, dateParts[2])

然后将值加 1 以再次显示它:

            this.value = !date ? "" :
                (date.getMonth() + 1) + "/" +
                date.getDate() + "/" +
                date.getFullYear();

请参阅有关Mozilla 开发网络的这篇文章。getMonth()

于 2013-07-05T14:26:44.447 回答