如何比较两个日期以具有验证功能

时间:2017-03-02 11:24:34

标签: javascript jquery angularjs momentjs

嗨,我正在开展一个项目,在那里我约会了。

我需要对同一领域进行验证。

1)应该允许用户选择以前的日期或年份。 2)但不允许用户选择未来的日期。

我使用了以下代码,它仅适用于今年。 任何人都可以帮助我实现它。

 $scope.$watch('date', function(val) {
   var dateNewOnCreatessssss = $scope.convertedTimeToSend(new Date());
   console.log("dateNewOnCreatessssss", dateNewOnCreatessssss);
   $scope.convertedTimeToSend = function(timestamp) {
     var c = moment(timestamp).format("MM-DD-YYYY");
     return c;
   };
   if (val) {
     $scope.dateErrorMsg = false;
   }
   var dateNewOnCreatessssssll = $scope.convertedTimeToSend(val);
   console.log("dateNewOnCreatessssssll", dateNewOnCreatessssssll);
   if (dateNewOnCreatessssssll > dateNewOnCreatessssss) {
     $scope.dateErrorMsgsssssss = true;
     $scope.newReceiptSaveBtn = "true";
   } else {
     $scope.dateErrorMsgsssssss = false;
     $scope.newReceiptSaveBtn = "false";
   }
 });

1 个答案:

答案 0 :(得分:2)

m8,你的代码很乱。只需使用momentjs提供的所有优点,即可使其正常运行。最后这个函数应该看起来像这个简单的片段:

$scope.$watch('date', function(val) {
    if (val) {

        //Init
        var today = new moment();
        var selectedDate = new moment(val);

        if(selectedDate.isBefore(today)){
            $scope.dateErrorMsg = false;
            $scope.newReceiptSaveBtn = "false";

        } else {
            $scope.dateErrorMsg = true;
            $scope.newReceiptSaveBtn = "true";
        }
    }
});

虽然上面的示例是基于您的代码集中解决方案,但是像这种方法一样创建纯AngularJS处理会更好:

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($scope) {

    //Init
    $scope.date  = new moment()._d;
    $scope.error = false;
    
    $scope.validateDate = function () {
    
        //Init
        var today = new moment();
        var selectedDate = new moment($scope.date);
        
        if(selectedDate.isBefore(today)){
            $scope.error = false;
        } else {
            $scope.error = true;
        }
    }
});
.error {
  border:1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    <input type="date" 
           ng-model="date" 
           ng-change="validateDate()" 
           ng-class="{ 'error': error }" />
  </div>
</div>