【问题标题】:jQuery UI Datepicker separate date/month+yearjQuery UI Datepicker 分隔日期/月+年
【发布时间】:2015-09-02 07:08:23
【问题描述】:

我想要一个像 booking.com 上的日期选择器。

当另一个选择框中的月份+年份发生变化时,它会自动更改月份的日期+日期。我查看了 jQuery datepicker 的 API,但找不到任何对我有帮助的东西。

【问题讨论】:

  • 到目前为止你做了什么?发布您的代码。这不是为您提供代码服务...

标签: javascript jquery jquery-ui datepicker


【解决方案1】:

请参阅我创建了一个小提琴,您从 DatePicker 中选择日期,然后它将在另一个字段上更改为日/月/年。 :Demo

$(function() {
$("#fullDate").datepicker({
    onClose: function(dateText, inst) {
        $('#year').val(dateText.split('/')[2]);
        $('#month').val(dateText.split('/')[0]);
        $('#day').val(dateText.split('/')[1]);
    }
});
});

【讨论】:

    【解决方案2】:

    感谢您的意见。我终于想出了如何让它工作。

    所以这里是任何想要这种功能的人的答案。

    HTML

    <select name="day" id="day">
         <option value="">Select Day</option>
    </select>
    <select name="month" id="month">
         <option value="">Select Month</option>
    </select>
    

    JS

    function getMonths() {
        var months = new Array(12);
        months[0] = "Jan";
        months[1] = "Feb";
        months[2] = "Mar";
        months[3] = "Apr";
        months[4] = "May";
        months[5] = "Jun";
        months[6] = "Jul";
        months[7] = "Aug";
        months[8] = "Sep";
        months[9] = "Oct";
        months[10] = "Nov";
        months[11] = "Dec";
        var d = new Date();
        var month = d.getMonth();
        var year = d.getFullYear();
        var monthsArray = new Array(13);
        for (var i = 0; i < 13; i++) {
            var now = new Date();
            if (now.getMonth() == 11) {
                var current = new Date(now.getFullYear() + 1, 0, 1);
            } else {
                var current = new Date(now.getFullYear(), now.getMonth() + i, 1);
            }
            monthsArray[current.getMonth() + 1 + '_' + current.getFullYear()] = months[current.getMonth()] + ' ' + current.getFullYear();
        }
        return monthsArray;
    }
    
    function getDaysInMonth(month, year, daySelector) {
        var names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
        var date = new Date(year, month - 1, 1);
        var days = [];
        while (date.getMonth() == month - 1) {
            days[date.getDate()] = (date.getDate() + " " + names[date.getDay()]);
            date.setDate(date.getDate() + 1);
        }
        daySelector.find('option').remove();
        daySelector.append($("<option></option>").attr("value", '').text("Day"));
        for (var key in days) {
            daySelector.append($("<option></option>").attr("value", key).text(days[key]));
        }
    }
    
    var months = getMonths();
    for (var key in months) {
        $('#month')
            .append($("<option></option>")
            .attr("value", key)
            .text(months[key]));
    }
    
    $('#month').change(function () {
    
        var monthYear = $('#month').val().split('_');
        getDaysInMonth(monthYear[0], monthYear[1], $('#day'));
    
    });
    

    Demo & Code

    【讨论】:

    • 当变量currentgetMonths 中的for 循环中无法访问控制流范围之外时,您如何使用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多