JSFiddle - React, Tailwind, and code Playground
by Décio Luiz Rocha
HTML
<form>
<select id="jform_Anos">
<option value="">Anos</option>
</select>
<select id="jform_Meses">
<option value="">Meses</option>
</select>
<select id="jform_Dias">
<option value="">Dias</option>
</select>
</form>
JavaScript
$(document).ready(function () {
$("#jform_Anos").change(function () {
var dataAtual = new Date();
var dataFinal = dataAtual.getFullYear()+5;
options_anos = '<option value="0">Anos</option>';
for( var ano = dataAtual.getFullYear(); ano <= dataFinal; ano++){
options_anos += '<option value="' + ano + '">' + ano + '</option>';
}
$("#jform_Anos option:selected").each(function () {
options_meses = '<option value="0">Meses</option>';
contaMes = 1;
if ($("#jform_Anos option:selected").text() == dataAtual.getFullYear()){
contaMes = dataAtual.getMonth()+1;
}
if ($("#jform_Anos option:selected").val() != 0){
for( var mes = contaMes; mes <= 12; mes++){
options_meses += '<option value="' + mes + '">' + mes + '</option>';
}
}
$("#jform_Meses option:selected").each(function () {
options_dias = '<option value="0">Dias</option>';
contaDia = 1;
if (($("#jform_Anos option:selected").text() == dataAtual.getFullYear()) & ($("#jform_Meses option:selected").text() == dataAtual.getMonth()+1)) {
contaDia = dataAtual.getDate();
}
ultimoDia = (new Date( $("#jform_Anos option:selected").val(), ($("#jform_Meses option:selected").val() + 1), 0 )).getDate();
if ($("#jform_Meses option:selected").val() != 0){
for( var dia = contaDia; dia <= ultimoDia; dia++){
options_dias += '<option value="' + dia + '">' + dia + '</option>';
}
}
});
$("#jform_Dias").html(options_dias);
});
$("#jform_Meses").html(options_meses);
}).change();
$("#jform_Anos").html(options_anos);
});