设置无效的日期字符串HTML5日期输入

时间:2017-08-09 15:19:48

标签: javascript angularjs html5 date

我想知道是否可以在某些JS检查后将无效日期字符串设置为HTML5日期输入,例如“今天”而不是显示XX-XX-XXXX日期?

请注意,我正在使用angular-1.6,它使用它的内置指令,这使得这个黑客难以实现。

<input id="dateNative"
   type="date"
   ng-model="date.selectedDate"
   min="{{minDate | date:'yyyy-MM-dd'}}">


function Controller($scope, $log, $element, $document) {
  $scope.date = {};
  $scope.minDate = new Date();

  this.$postLink = () => {
    this.dateCtrl = angular.element($document[0].getElementById('dateNative')).controller('ngModel');
    this.dateCtrl.$parsers.unshift(date => {
      if (moment(new Date()).isSame(date, 'day')) {
        return 'Immediately';
      }
      return date;
    });
  };
}

2 个答案:

答案 0 :(得分:1)

尝试将输入type更改为文字

this.dateCtrl.$parsers.unshift(date => {
  if (moment(new Date()).isSame(date, 'day')) {
    $element[0].type = 'text';
    return 'Immediately';
  }
  $element[0].type = 'date';
  return date;
});

答案 1 :(得分:1)

元素可以使用interpolation来定义输入类型

<input id="dateNative"
   type="{{date.type}}"
   ng-model="date.selectedDate"
   min="{{minDate | date:'yyyy-MM-dd'}}" />
$scope.date.type = "text";
$scope.date.selectedDate = "Immediately";