2015-07-02 3 views
1

Я пытаюсь установить сегодня как максимальную дату ввода даты. Но каждый раз, когда я выбираю сегодня в подборщике даты, значение модели всегда было неопределенным. Кто-то встретил такую ​​же проблему?Странная ошибка с вводом даты в угловом

HTML код:

<form name="myForm" class="item"> 
    <input type="date" ng-model="date" max="{{maxDateStr}}" name="dateInput"> 

    <p> date: {{date | date:'yyyy-MM-dd'}}</p> 
    <p>myForm.$valid : {{myForm.$valid}}</p> 
    <p>myForm.dateInput.$error.max : {{myForm.dateInput.$error.max}}</p> 
</form> 

JS код:

angular.module('angularApp',[]) 

.controller('MyCtrl', function($scope, $filter) { 
    $scope.maxDateStr = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    $scope.date = new Date(); 

}); 

мой код на codepen

после отладки в хроме, я обнаружил, что, когда выбрать дату максимальное значение перейти к NgModelController. У парсеров $ было время, например Чт июл 02 2015 16:54:00 GMT + 0800 (КНТ). При запуске максимального валидатор он возвращает ложь,

угловой Макс код валидатора:

var maxVal; 
    ctrl.$validators.max = function(value) { 
    return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal; 
    }; 

, так как значение maxVal было Thu Jul 02 2015 00:00:00, она возвращает ложь.

+0

Ваш код не открывается. а также, постарайтесь поставить кодекс, о котором идет речь, вкратце. –

+0

отредактируйте свою ссылку -> удалите пробел в начале и добавьте: после http – binariedMe

+0

Видел ваш код ... он отлично работает для меня ... какая именно проблема? – binariedMe

ответ

1

Заменить код со следующими

angular.module('angularApp',[]) 

.controller('MyCtrl', function($scope, $filter) { 
    $scope.maxDateStr = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    $scope.date = new Date(); 
}); 

с

angular.module('angularApp',[]) 

.controller('MyCtrl', function($scope, $filter) { 
    $scope.maxDateStr = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    $scope.date = new Date((new Date()).getFullYear(), (new Date()).getMonth(), (new Date()).getDate()); 
}); 

Примечание: Это будет создавать дату с 00:00:00 времени, поэтому он должен совершенствовать работать с максимальной проверки.

+1

, он работает на хроме для меня. большое спасибо. –

+0

@FengLu Пожалуйста, поддержите, если вам нравится решение –

Смежные вопросы