Javascript 验证多个日期字段

Javascript 验证多个日期字段,javascript,angularjs,validation,angularjs-directive,Javascript,Angularjs,Validation,Angularjs Directive,我正在创建一个表单,我有一个日期选择器和一个时间选择器,用于开始日期和结束日期。 所以我总共有4个字段。 我希望能够验证startdate(startdate和startTime的组合)是否早于enddate。但我似乎不知道应该在哪里以及如何进行验证 因此,无论何时编辑其中一个字段,都应触发验证 我似乎不知道在何处以及如何创建此验证,我尝试创建一个名为method validation的自定义验证,它可以从控制器检索一个方法,然后确定验证是否为propper,但我不能将其仅放在一个字段上,因为如

我正在创建一个表单,我有一个日期选择器和一个时间选择器,用于开始日期和结束日期。 所以我总共有4个字段。 我希望能够验证startdate(startdate和startTime的组合)是否早于enddate。但我似乎不知道应该在哪里以及如何进行验证

因此,无论何时编辑其中一个字段,都应触发验证

我似乎不知道在何处以及如何创建此验证,我尝试创建一个名为method validation的自定义验证,它可以从控制器检索一个方法,然后确定验证是否为propper,但我不能将其仅放在一个字段上,因为如果我更改另一个字段,验证将不会触发

如何让它工作

底线是,我希望能够将2和2个字段设置在一起,并对它们进行比较,如果end小于start,则显示一条消息

后续行动:

问题不是比较两个日期。我能做到的

<input type="text" ng-model="activity.startDate" date-picker>
<input type="text" ng-model="activity.startTime" time-picker>

<input type="text" ng-model="activity.endDate" date-picker>
<input type="text" ng-model="activity.endTime" time-picker>
这是为了确保两个字段的组合没有关闭

module.directive('validDate', function(){
    return {
        require: 'ngModel',
        link: function(scope, elm, attrs, ctrl) {
            function  validator(value){
                var valid = true;
                if (value != undefined) {
                  value = moment(value, 'YYYY-MM-DD').format('YYYY-MM-DD'); 
                  if (((attrs.validDate == 'start') && (value >= scope.$eval(attrs.otherDate))) || ((attrs.validDate == 'end') && ((value < scope.$eval(attrs.otherDate))))) {
                    valid = false;
                  }                        
                 } else {
                   valid = false;
                 }

                ctrl.$setValidity('date-valid', valid); 
                return value;
            }

            scope.$watch([attrs.otherDate, attrs.ngModel] ,function(newValue) {
                validator(scope.$eval(attrs.ngModel));
                }, true);                        
        }
    };
});
用法:

<input type="date" ng-model="startDate" valid-date="start" other-date="endDate" />
<input type="date" ng-model="endDate" valid-date="end" other-date="startDate" />

让我知道它是否有效。我在这里使用了格式设置,但可以随意更改。

如果我只有两个字段,那就行了。但是我有4个。开始和结束的日期字段和时间字段:因此,请相应地修改指令。有这个字段并不难,所以你会在每个字段上引用所有其他字段?我真的不知道如何用一个好的方法来解决这个问题。不知怎的,你必须告诉AngularJS哪个字段要验证哪个字段。您可以在验证器或类似的东西中硬编码作用域属性名称。