使用角度js进行日期验证

时间:2018-03-22 20:44:01

标签: angularjs

我有mm-dd-yyyy格式的开始日期和结束日期选择器。日期应该在开始日期和结束日期的10天范围内,不应该在开始日期之前。如何使用角度js进行验证。非常感谢

3 个答案:

答案 0 :(得分:1)

我建议你使用moment.js。这是一个基本的教程和帮助入门: https://dzone.com/articles/getting-started-with-momentjs-intro-with-examples

基本上你会这样做:

function testDate(startDate, endDate){
    var start =  moment(startDate, 'mm-dd-yyyy');
    var end = moment(endDate, 'mm-dd-yyyy');
    if(endDate.isBefore(start)){
       //start before end
    }
    if(startDate.add('days', 11).isAfter(endDate)){
       //end not within 10 days range
    }
    //success!
}

就是这样的。希望它有所帮助!

答案 1 :(得分:0)

对于简单模式匹配,您可以使用ngPattern指令。对于更复杂的验证(例如确保它是有效日期以及在另一个日期的某个范围内),您需要编写自己的验证指令或使用Angular-UI提供的方便的自定义验证指令。

https://htmlpreview.github.io/?https://github.com/angular-ui/ui-validate/master/demo/index.html

答案 2 :(得分:0)

您能否提供有关此内容的更多详细信息,例如您在datepicker中使用的库。这将有助于我们回答。

由于您使用的是日期选择器,因此您可以限制fromDate字段中的日期范围,不显示某段时间之后的任何日期(在您开始日期的10天内)。

jQuery datepicker允许使用其他日期选择器。

修改 在您的控制器中执行类似的操作。

var newDate = new Date($scope.startdate.getFullYear(), $scope.startdate.getMonth(), $scope.startdate.getDate()+10);
$scope.dateOptions = {
 maxDate: newDate,
 dateFormat: 'dd/mm/YYYY'
};

现在您可以将dateOptions传递给您的输入。

注意:发布最小的plunkr,以便更快地解决您的问题。