JSFiddle - React, Tailwind, and code Playground

by Сергей Тарасевич

HTML

<div data-calendar=""></div>

JavaScript

var month_names = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];

$(document).on('change', '[data-calendar] select', function() {
    var a = $(this),
        b = a.data('update_profile'),
        c = [$('[data-update_profile="birthday_day"]').val(), $('[data-update_profile="birthday_month"]').val(), $('[data-update_profile="birthday_year"]').val()];
    if (b != 'birthday_day' && b == 'birthday_month' || b == 'birthday_year') {
        fun_calendar(c);
    }
});

function fun_calendar(a) {
    var nD = new Date(),
        dy = nD.getFullYear() - 14,
        dm = nD.getMonth(),
        dd = nD.getDate(),
        xD = $('[data-calendar]').data('calendar'),
        s1 = '',
        s2 = '',
        dC = '';
    if (a != false) {
        var dd2 = a[0],
            dm2 = a[1],
            dy2 = a[2];
    } else {
        var dd2 = dd,
            dm2 = dm,
            dy2 = dy;
    }
    dC = new Date(dy2, dm2, 0).getDate();

    console.log('мак день ' + dC);
    console.log('день ' + dd2);
    console.log('месяц ' + dm2);
    console.log('год ' + dy2);
    /*************/
    s1 += '<select class="select_fool" data-update_profile="birthday_day" name="birthday[day]">';
    for (var i = 1; i <= dC; i++) {
        s2 = '';
        if (i == dd2) {
            s2 = ' selected';
        }
        s1 += '<option value="' + i + '"' + s2 + '>' + i + '</option>';
    }
    s1 += '</select>';
    /*************/
    s1 += '<select class="select_fool" data-update_profile="birthday_month" name="birthday[month]">';
    for (var i = 0; i < 12; i++) {
        s2 = '';
        if (i == dm2) {
            s2 = ' selected';
        }
        s1 += '<option value="' + i + '"' + s2 + '>' + month_names[i] + '</option>';
    }
    s1 += '</select>';
    /*************/
    s1 += '<select class="select_fool" data-update_profile="birthday_year" name="birthday[year]">';
    for (var i = dy; i >= dy - 100; i--) {
     ...