Javascript 在droplist日历中隐藏不正确的日期

Javascript 在droplist日历中隐藏不正确的日期,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我对web开发非常陌生,虽然我知道我可以使用日历日期选择器将日期输入表单。我想知道如何从day-month-year下拉列表中隐藏或禁用不正确的日期,例如2月30日或4月31日。使用javascript或jquery有没有一种不晦涩的方法可以做到这一点? 我在考虑这种约会选择。 请参见根据中的答案,首先向下拉列表中添加几个类,并以这种方式使用JQuery: $(document).ready(function () { $('.operator').on('change', functi

我对web开发非常陌生,虽然我知道我可以使用日历日期选择器将日期输入表单。我想知道如何从
day-month-year
下拉列表中隐藏或禁用不正确的日期,例如
2月30日
4月31日
。使用javascript或jquery有没有一种不晦涩的方法可以做到这一点? 我在考虑这种约会选择。 请参见

根据中的答案,首先向下拉列表中添加几个类,并以这种方式使用JQuery:

$(document).ready(function () {
    $('.operator').on('change', function () {
    var daysx = Math.round(((new Date($('.year option:selected').val(), $('.month option:selected').val()))-(new Date($('.year option:selected').val(), parseInt($('.month option:selected').val())-1)))/86400000);

    console.log(daysx);
    $('.maindates option').remove();
    for (var i=1; i < (daysx + 1); i++) {
        $('.maindates').append('<option value="' + i + '">' + i + '</option>');
    }
  });
});
$(文档).ready(函数(){
$('.operator')。在('change',函数(){
var daysx=Math.round((新日期($('.year选项:selected').val(),$('.month选项:selected').val())-(新日期($('.year选项:selected').val(),parseInt($('.month选项:selected').val())/86400000);
console.log(daysx);
$('.maindates选项').remove();
对于(变量i=1;i<(daysx+1);i++){
$('.maindates')。追加(''+i+'');
}
});
});
请参见此处的my JSFIDLE:

根据中的答案,首先向下拉列表中添加几个类,并以以下方式使用JQuery:

$(document).ready(function () {
    $('.operator').on('change', function () {
    var daysx = Math.round(((new Date($('.year option:selected').val(), $('.month option:selected').val()))-(new Date($('.year option:selected').val(), parseInt($('.month option:selected').val())-1)))/86400000);

    console.log(daysx);
    $('.maindates option').remove();
    for (var i=1; i < (daysx + 1); i++) {
        $('.maindates').append('<option value="' + i + '">' + i + '</option>');
    }
  });
});
$(文档).ready(函数(){
$('.operator')。在('change',函数(){
var daysx=Math.round((新日期($('.year选项:selected').val(),$('.month选项:selected').val())-(新日期($('.year选项:selected').val(),parseInt($('.month选项:selected').val())/86400000);
console.log(daysx);
$('.maindates选项').remove();
对于(变量i=1;i<(daysx+1);i++){
$('.maindates')。追加(''+i+'');
}
});
});

请参见此处的my JSFIDLE:

您可以强制用户先选择一个月,然后更新为日期选择器启用的值。然后,一旦选择了一年,您可以运行一些日期验证()来确定该日期是否有效,然后通知用户该日期无效。您可以强制用户先选择一个月,然后更新为日期选择器启用的值。然后,一旦选择了一年,您就可以运行一些日期验证()来确定它是否是有效日期,然后通知用户该日期无效,这样做的效果非常好。非常感谢你。但我注意到,无论何时单击列表中不同的月份或年份,日期的值都会返回到1(我认为这是因为它为月份创建了正确的数组)。嗯,我们怎么能回避这个问题呢?。(我知道我必须在上大学之前处理jquery。)我将在几分钟内修改JSFIDLE中的代码好的,我修改了JSFIDLE。再次查看并将更改复制到此处:刚刚再次更新。我添加了一个if语句来选择该月的最后一个可用日期,以防您之前选择了一个更大的日期,并且所述日期在更改月份或年份后不再可用。这一技巧做得非常好。非常感谢你。但我注意到,无论何时单击列表中不同的月份或年份,日期的值都会返回到1(我认为这是因为它为月份创建了正确的数组)。嗯,我们怎么能回避这个问题呢?。(我知道我必须在上大学之前处理jquery。)我将在几分钟内修改JSFIDLE中的代码好的,我修改了JSFIDLE。再次查看并将更改复制到此处:刚刚再次更新。我添加了一个if语句来选择该月的最后一个可用日期,以防您以前选择了更大的日期,并且在更改月份或年份后,所述日期不再可用。