2013-11-27 22 views
7

Używam datepicker AngularUI.Dezaktywacja dynamicznej daty AngularUI Datepicker

Mam dwa datepickery, które wpływają na siebie nawzajem. Jedna to na przykład "data rozpoczęcia", a druga to "data zakończenia". Zamiast tworzyć sprawdzanie poprawności dla obu typów danych, chcę wyeliminować opcję niepoprawnych dat (tj. Datę zakończenia wcześniejszą niż data rozpoczęcia i na odwrót).

Czy istnieje sposób ponownego uruchomienia atrybutu wyłączania daty w przypadku wyboru daty? (ponownie aktywować datę wyłączoną z INNEGO datepika)

Mój plunkr: mam datę początkową i końcową, jak widać po otwarciu każdego wyboru daty, nie można wybrać daty początkowej wyższej niż data końcowa i wzajemnie. Jeśli jednak zmienię datę rozpoczęcia na 11/21, chcę zaktualizować datepicker daty końcowej, aby nie było już możliwości kliknięcia przycisku 11/20. Czy jest jakiś sposób to zrobić?

http://plnkr.co/edit/TgisJnSwQItDeCuIReLL?p=preview

Odpowiedz

8

Można to zrobić za pomocą wartości minimalne i maksymalne cechy w kombinacji z oglądaniem wartości zbieracze. Spójrz na http://plnkr.co/edit/W5pb1boMLOHZFnWkMU8o?p=preview

+0

, który działał idealnie, dziękuję! – changus

+0

Świetna robota, dziękuję – jayM

+0

Z twojego plunkera widzę jedną wadę. Jeśli najpierw wybiorę datę zakończenia (10/2/2014), a następnie wybierz datę rozpoczęcia i kliknij dzisiaj (10/0/2014). To pozwala mi wybrać dzisiaj (10.08.2014) jako datę rozpoczęcia, która jest większa niż data zakończenia (10/2/2014) –

4

Naprawdę nie potrzebujesz całego javascript. tutaj jest widelec poprzedniego rozwiązania.

http://plnkr.co/edit/kXkzCeBTlxOpOyZKfTiN

jeśli masz dwa wejścia, takie jak

  <input id="getTSStartDateInput" ng-model="StartDate" type="text" class="form-control ng-pristine ng-valid ng-valid-required" datepicker-popup="dd MMM yyyy" required="required" ng-required="true"/> 
      <input id="getTSEndDateInput" ng-model="EndDate" min="StartDate" type="text" class="form-control ng-pristine ng-valid ng-valid-required" datepicker-popup="dd MMM yyyy" required="required" ng-required="true"/> 

będzie działać automatycznie i wyłączać dowolną datę końcową, która jest przed datą rozpoczęcia Zawiadomienie ng model = „DataZakończenia” min = "StartDate", to wszystko, czego potrzebujesz.

0

Użyłem prostego rozwiązania dodawania Ng-zmiany zarówno w startDate i endDate. Jeśli data rozpoczęcia zmieni się, ustaw wartość minDate dla metody endDate na wartość startDate i dla parametru endDate. Nadzieję, że pomaga

Powiązane problemy