javascript - 在选择框上重新填充日期

标签 javascript jquery ruby-on-rails ruby-on-rails-3

我在 Rails 中创建了一个 date_select(它有 3 个选择框:一个用于年,一个用于月,一个用于日)。

将 2 月 31 日放在他们身上是相当令人困惑的。我想要的是只有有效日期的选择框。我的意思是,当您选择二月、31 日、30 日(以及某些年份的 29 日)时,它们会被删除,然后,当您选择一月时,它们会再次添加,依此类推。此外,我希望初始选择框仅填充所选月份的日期。

最佳答案

我假设您有三个选择类 '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)
});

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

关于javascript - 在选择框上重新填充日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822550/

相关文章:

javascript - 给定起始和结束 IP 地址派生网络掩码

ruby-on-rails - 使用 :autosave for has_one association: How to show the parent's errors when on the child's controller?

javascript - 如何覆盖位置 : absolute in css?

javascript - 如何在 Rails View Controller 中访问 HTML5 本地存储

mysql - 限制用户仅查看 Rails 中的关联记录

javascript - 使用 Javascript 文件 API 获取图像尺寸

javascript - 使用 angularjs 让 cookie 永不过期

Javascript - Google 闭包注释 - 设置匿名函数的类型

javascript - 清除 Javascript 中的 Var 或回调

javascript - 单击时禁用父事件,但允许 child 维护自己的事件