2014-11-19 3 views
1

양식을 만들고 있는데 시작일과 종료일 모두에 대해 datepicker와 timepicker가 있습니다. 그래서 총 4 개의 필드가 있습니다.startdate (startDate와 startTime의 조합)가 enddate보다 초기인지 확인하고 싶습니다. 그러나 나는이 검증을 어디에서 어떻게해야하는지 파악할 수 없다.복수 날짜 필드 유효성 확인

필드 중 하나를 편집 할 때마다 유효성 검사가 실행됩니다.

이 유효성 검사를 어디에서 어떻게 만드는 지 알 수는 없지만 유효성 검사가 프로퍼티인지 확인한 다음 컨트롤러에서 메서드를 검색 할 수있는 메서드 유효성 검사라는 사용자 지정 유효성 검사를 만들려고했습니다. 하지만 하나의 필드에만 넣을 수는 없습니다. 다른 필드를 변경하면 유효성 검사가 트리거되지 않기 때문입니다.

누구나이 작업을 수행하는 데 이상이 있습니까?

결론은 2와 2 필드를 togehter로 설정하고 비교하여 끝이 시작보다 작 으면 메시지를 표시 할 수 있기를 원합니다.

후속 :

문제는 두 날짜를 비교하지 않습니다. 내가 성취 할 수있어.

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

가 작동하는지 알려줘 :

<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> 

것은이 두 필드의 조합을 확인하는되어 오프

답변

0
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);       
     } 
    }; 
}); 

사용하지 않습니다. 여기에서 서식을 지정하기 위해 MomentJS library을 사용했지만 자유롭게 변경할 수 있습니다.

+0

그 중 2 필드 만 있으면 작동합니다. 하지만 둘 다있다. 날짜 필드와 시간 필드 모두 시작과 끝 모두. :) – Ngschumacher

+0

따라서 지침을 적절하게 수정하십시오. 이 것은 매우 어렵지 않습니다. –

+0

그래서 모든 필드의 다른 모든 필드에 대한 참조가 있습니까? 그런 식으로 좋은 매너로 해결 될 수있는 방법을 실제로 볼 수 없습니다. – Ngschumacher