2013-11-25 4 views
2

입력란에 Bootstrap Datepicker (여기에서 찾을 수 있습니다 : http://mgcrea.github.io/angular-strap/#/datepicker)를 사용하고 있습니다. 기본적으로 datepicker를 사용하면 날짜를 입력 할 수 있습니다. 유효하면 날짜를 설정합니다. 그렇지 않으면 날짜를 현재 날짜로 설정합니다. AngularJs Bootstrap Datepicker 유효성 검사

내가 입력 :

maskModelCtrl.$parsers.push(function(inputValue) { 
    var val = maskRenderLogic(inputValue, mask, maxVal); 

    setAndRender(maskModelCtrl, val); 
    return maskReturnLogic(val); 
}); 

이 될 수있는 날짜를 문자 만에 ​​정규 표현식을 사용하는 지시어를 썼다 그리고 템플릿과 날짜 선택기에 대한 입력 필드를 표준화하기위한 지침을 썼다 :

angular.module('form.validation').directive('dateMask', ['$parse', function($parse) { 
    return { 
     restrict: 'E', 
     scope: { 
      date: '=' 
     }, 
     template: '<input ng-model="date" regex-mask="[^0-9 /]" max-length="10" bs-datepicker data-date-format="mm/dd/yyyy" placeholder="mm/dd/yyyy" >', 
     replace: true 
    }; 
}]); 

문제는 datepicker가 키보드 입력 또는 날짜 선택을 현재 날짜로 변환한다는 것입니다. (plnkr : http://plnkr.co/edit/oCZnq0UOmaxC83Rv7YSs?p=preview) 나는이 지시어들이 서로 호환되지 않아야한다고 생각하지 않는다.

답변

4

아마도 당신은 이미 이것을 생각했지만, 날짜 (입력, 수정 등)가 많은 응용 프로그램을 작성하고 많은 다른 날짜 선택 도구를 테스트했습니다.

Angular-UI Bootstrap datepicker가 가장 가단하고 사용하기 쉬운 것 같습니다.

마크 업 :

app.directive('dateValidator', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function(scope, elem, attrs, ctrl) { 

      var validate = function(value) { 
       //.. do validation logic ../ 
       modifiedValue = value/2; 

       // set the validity if needed      
       ctrl.$setValidity('customDate', false); 

       //return the modified value 
       return modifiedValue; 
      } 

      // formatters fire when the model directly changes 
      ctrl.$formatters.unshift(function(value) { 
       return validate(value); 
      }); 

      // parsers fire when the model changes via input 
      ctrl.$parser.unshift(function(value) { 
       return validate(value); 
      }); 


     } 
    } 
}); 
+1

가 'ngModel'후 쉼표 누락이

<input date-validator type="text" ng-model="date"/> 

지침 누락 "VAR, 당신의 지시는 $ 포매터 및 $ 파서를 활용해야한다고 말했다되고 그건

"var validate = function ...에서 $ formaters 및 $ parser에 예외를 throw합니다. 실제로이 두 가지를 시작하는 방법에 대한 명확하지 않은 컨텍스트가 있습니다. Controller (?)에로드해야하는지 JSFiddle 샘플이 어떻게 평가 될까요? 어쨌든 좋은 방향으로 팁을 주셔서 감사합니다. – lubosdz