По умолчанию начало или конец года, если в angularjs - bootstrap -datepicker введен только год - PullRequest
6 голосов
/ 24 января 2020

Я использую angularjs - bootstrap -datetimepicker , но я не могу понять, как я могу сделать необязательным ввод полной даты при ручном вводе даты вместо используя пользовательский интерфейс.

То есть я хотел бы иметь возможность вручную вводить только «2020» и вызывать функцию, в которой я могу указать, должно ли это быть «2020-01-01, 2020-12». -31 "или что-то совсем другое. Также можно использовать GUI по назначению.

Ответы [ 2 ]

5 голосов
/ 31 января 2020

Я работал над похожей проблемой с другим датчиком, но решение также может работать здесь.

Я решил свою проблему, скрыв исходный ввод средства выбора даты и поместив отдельное поле ввода с привязкой ng-модели к то же значение объема. Затем я прикрепил к нему собственную директиву, которая реализовала парсер для пользовательского ввода, который понимал мой пользовательский формат. (См. ngModel. $ Parsers ):

<input ng-model="my.model" my-parser>
<my-datepicker-directive ng-model="my.model">

Директива была реализована следующим образом. Вам просто нужно реализовать свои собственные myParserFunction() и myFormattingFunction()myValidationFunction(), если вы хотите проверить ввод):

angular.module('app')
  .directive('myParser', function () {
    return {
      require: 'ngModel',
      link: function (scope, element, attrs, ngModelController) {

        /*
         * Display -> Model
         */
        ngModelController.$parsers.push(function (inputValue) {
          if (!myValidationFunction(inputValue)) {
            ngModelController.$setValidity('myParser', false);
            return null;
          }

          ngModelController.$setValidity('myParser', true);
          return myParserFunction(inputValue);
        });

        /*
         * Model -> Display
         */
        ngModelController.$formatters.push(function (modelValue) {
          return myFormattingFunction(modelValue);
        });
      },
    };
  });
0 голосов
/ 27 января 2020

Я думаю, вы можете использовать minDate и Maxdate

http://next.plnkr.co/edit/VyWzqYk426is0F1g

Первый щелчок мышью по минимальной дате, чтобы она развернула датировщик даты введите 2020 и нажмите ввод, после чего вы увидите, что он отключает даты.

...