在选择框上重新填充日期

Abe*_*Toy 6 javascript jquery ruby-on-rails ruby-on-rails-3

我在Rails中创建了一个date_select(这是3个选择框:一个用于一年,一个用于月份,一个用于一天).

2月31日对他们来说是相当混乱的.我希望能够使选择框只有有效日期.我的意思是,当您选择2月,31日,30日(以及某些年份29日)时,将删除,然后,当您选择1月时,它们会再次添加,依此类推.此外,我希望初始选择框仅填充所选月份的日期.

Dav*_*ang 9

我假设你有三个选择类'day', 'month', 'year'.然后使用这个JS:

function monthChanged() {
    var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    var month = $('.month').val() - 1, year = +$('.year').val();
    var diff;

    // Check for leap year if Feb
    if (month == 1 && new Date(year, month, 29).getMonth() == 1) days[1]++;

    // Add/Remove options
    diff = $('.day option').length - (days[month] + 1);
    if (diff > 0) { // Remove
        $('.day option').slice(days[month] + 1).remove();
    } else if (diff < 0) { // Add
        for (var i = $('.day option').length; i <= days[month]; i++) {
            $('<option>').attr('value', i).text(i).appendTo('.day');
        }
    }
}

$(function () {
    monthChanged(); // On document ready
    $('.month').change(monthChanged); // On month change
    $('.year').change(monthChanged); // On year change (for leap years)
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/FxBpB/