我想知道是否可以在某些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;
});
};
}
答案 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";