我有mm-dd-yyyy格式的开始日期和结束日期选择器。日期应该在开始日期和结束日期的10天范围内,不应该在开始日期之前。如何使用角度js进行验证。非常感谢
答案 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,以便更快地解决您的问题。