Использование bootstrap-datepicker и Inputmask

Для верстки формы ввода решил использовать bootstrap 4 + bootstrap-datepicker + Inputmask. В принципе, все получилось как хотел. Но один функционал все же работает не так, как надо. А именно... Если я ввожу дату цифрами в поле ввода, то валидация поля отрабатывает правильно. Однако, если использую ввод посредством раскрывающегося календаря от datepicker'а - что-то не срабатывает, и поле не валидируется. Прошу помощи!

Синтетический пример

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css">
  <title>Example</title>

  <style>
    .append-box {
      width: 36px;
      justify-content: center!important;
    }

    .input-group {  
      position: relative;
    }

    .input-group-custom .form-control {
      padding-right: 50px;
    }

    .input-group-custom .input-group-append {  
      position: absolute; top: 0; right: 0;
    }

    .input-group {
      position: relative;
    }

    .form-control {
      padding-right: 50px;
      border-radius: .2rem!important;
    }

    .form-control:focus+.input-group-append .input-group-text {
      border-color: #80bdff;
    }

    .input-group-append {
      position: absolute;
      top: 0;
      right: 0;
    }

    .input-group-append .is-invalid {
      background: #f8d6d9;
      border-color: red;
    }

    .val-ok {
      color: #3fc406!important;
    }
  </style>

</head>
<body>
  <div class="d-flex justify-content-center">
  <div class="card mt-3 col-lg-6 col-md-8 col-sm-10">
    <div class="card-body ">
      <div class="d-flex flex-row form-group align-items-center">
        <div class="col-3 pr-3 text-right"><small><label for="inputDate" class="col-form-label">Дата:</label></small></div>
        <div class="col-9 p-0">
          <div class="input-group input-group-sm">
            <input id="input-date" type="text" class="form-control datepicker" data-provide='datepicker' data-date-format='dd/mm/yyyy' placeholder="дд/мм/гггг">
            <div class="input-group-append h-100">
              <div id="input-date-box" class="input-group-text append-box"><span id="ico-date" class="far fa-calendar-alt"></span></div>
            </div>
          </div>
        </div>
      </div>
      <center><button type="submit" class="btn btn-primary" value="submit">Кнопка</button></center>
    </div>
  </div>
  </div>

  <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.5/jquery.inputmask.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/js/all.min.js"></script>

  <script>
    $(document).ready(function() {

      $.fn.datepicker.dates['en'] = {
            days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
            daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб"],
            daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
            months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
            monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
            today: "Сегодня",
            clear: "Очистить",
            format: "dd/mm/yyyy",
            titleFormat: "MM yyyy", /* Leverages same syntax as 'format' */
            weekStart: 1,
            monthsTitle: "Месяцы"
      };

      $('.datepicker').datepicker({
        autoclose: true,
        format: "dd/mm/yyyy"   
      });

      $('.datepicker').on('changeDate', function() {
        console.log("Val: " + $("#input-date").val());
      });

      $("#input-date").inputmask( {
        "alias": 'datetime',
        "inputFormat": 'dd/mm/yyyy',
        "placeholder": '__/__/____',
        "oncomplete" : function() { 
          $("#input-date").removeClass("is-invalid");
          $("#input-date-box").removeClass("is-invalid");
          $("#ico-date").addClass("val-ok");
          console.log("ValOk: " + $("#input-date").val());
        },
        "onincomplete": function() { 
          $("#input-date").addClass("is-invalid");
          $("#input-date-box").addClass("is-invalid");
          $("#ico-date").removeClass("val-ok");
          console.log("ValBad: " + $("#input-date").val());
        },
      });
    });

  </script>
</body>
</html>


Ответы (0 шт):