Angularjs开始日期和结束日期验证

Kur*_*ula 5 javascript validation date angularjs

我完全是Angularjs的新手,并试图验证2个场景.我有2个文本框,一个带有开始日期,另一个带有结束日期.我正在查

  1. 如果开始日期不大于或等于今天,则在UI上显示验证错误.它应该是今天或今天之后的任何一天.
  2. 如果开始日期大于结束日期,则在UI上显示验证错误.结束日期应大于开始日期.

我尝试了下面的代码,但没有用.请给我任何建议.

Html代码

<label for="endDate" class="control-label">Start Date:</label>
<div>
    <input type="text" class="form-control" 
           id="startDate" ng-model="startDate" />
</div>

<label for="text" class="control-label">End Date:</label>
<div>
    <input type="text" class="form-control" 
           id="endDate" ng-model="endDate" 
            ng-change='checkErr(startDate,endDate)' />

</div>

<span>{{errMessage}}</span>
Run Code Online (Sandbox Code Playgroud)

js代码

$scope.checkErr = function(startDate,endDate){
    $scope.errMessage = '';
    $scope.curDate = new Date();

    if(startDate < endDate){
      $scope.errMessage = 'End Date should be greate than start date';
      return false;
    }
    if(startDate < curDate){
       $scope.errMessage = 'Start date should not be before today.';
       return false;
    }

  };
Run Code Online (Sandbox Code Playgroud)
  • 我有输入类型作为日期控件的文本.我正在使用bootstrap日期选择器.

Pre*_*oon 8

您在第一位上反转了逻辑,您必须从startDate构造一个新日期以与今天的日期进行比较.你也可以将curDate设置为范围,$scope.curDate = new Date()但之后你将它引用为curDate没有它,$scope因此它是未定义的.最后,你还需要演员stateDateendDate约会.否则你只是比较字符串.

$scope.checkErr = function(startDate,endDate) {
    $scope.errMessage = '';
    var curDate = new Date();

    if(new Date(startDate) > new Date(endDate)){
      $scope.errMessage = 'End Date should be greater than start date';
      return false;
    }
    if(new Date(startDate) < curDate){
       $scope.errMessage = 'Start date should not be before today.';
       return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/peceLm14/