javascript - 只有月份和年份的日期选择器

标签 javascript jquery datepicker

我想要一个日期选择器,用户只能从日期选择器中选择月份和年份,我还需要限制下一个日期选择器使用从前一个日期选择器中选择的月份和年份。

谁能帮帮我?

最佳答案

Sean 的回答非常好,如果你也想禁用日期选择,你可能会使用不同的方法,你可以在 this fiddle 中看到结果:

日历是隐藏的,所以你只能选择月份和年份。在第一个日期选择器中选择日期时,第二个日期选择器的 minDate 正在调整。

编辑

当日期格式不提供日期时,jQuery 日期选择器会出现严重问题。我更改了代码以使其工作。唯一的问题是打开日期选择器时,我必须将日期转换为合适的格式。看看新的 fiddle 。

HTML:

<p>Date: <input type="text" id="first-datepicker"/></p>
<p>Date: <input type="text" id="second-datepicker"/></p>

CSS:

#ui-datepicker-div .ui-datepicker-calendar,
#ui-datepicker-div .ui-datepicker-current
{
    display: none !important;
}

JavaScript:

$('#first-datepicker').datepicker({
    changeYear: true,
    changeMonth: true,
    beforeShow: function (input, inst) {
        setMyDate(inst);
    },
    onClose: function (dateText, inst) {
        saveMyDate(inst);

        var secondDatePicker = $('#second-datepicker').data('datepicker');
        var dateSetted = secondDatePicker.input.data('date-setted');

        setMyDate(secondDatePicker);

        secondDatePicker.input.datepicker('option', 'minDate', new Date(inst.selectedYear, inst.selectedMonth, 0));     

        if (dateSetted == true) {
            saveMyDate(secondDatePicker);
        };
    }
});

$('#second-datepicker').datepicker({
    changeYear: true,
    changeMonth: true,
    beforeShow: function (input, inst) {
        setMyDate(inst);
    },
    onClose: function (dateText, inst) {
        saveMyDate(inst);
    }
});

function saveMyDate(inst) {
    inst.selectedDay = 1;
    inst.input.data('year', inst.selectedYear);
    inst.input.data('month', inst.selectedMonth);
    inst.input.data('day', inst.selectedDay );

    var date = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);
    inst.input.datepicker('setDate', date );
    formatDate(inst, date);
    inst.input.data('date-setted', true);
};

function setMyDate(inst) {
    var dateSetted = inst.input.data('date-setted');

    if (dateSetted == true) {
        var year = inst.input.data('year');
        var month = inst.input.data('month');
        var day = inst.input.data('day');

        var date = new Date(year, month, day);
        inst.input.datepicker('setDate', date );
    };
};

function formatDate(inst, date) {
    var formattedDate = $.datepicker.formatDate('MM - yy', date);
inst.input.val(formattedDate);
};

关于javascript - 只有月份和年份的日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13681837/

相关文章:

javascript - 在 Chrome 中重新启用 window.alert

javascript - 在控制台或日志中显示jquery自定义属性

angular - Material Angular 6 DatePicker 正在解析我 1 天前的日期

jquery - 如何在只读字段上启用 jquery 验证?

javascript - jQuery UI 选择菜单 : Why is "select" event not triggered?

javascript - 使用 javascript 创建图表

javascript - 警报输入类型数字的值

javascript - 在 javascript 函数中获取 ruby​​ 数组的每个 i 元素(转义和取消转义)?

javascript - jQuery.filer JavaScript 数组从循环获取数据

jquery-ui - Firefox 中的 jQuery 日期选择器日历问题