2013-11-27 75 views
7

我正在使用AngularUI datepicker。AngularUI Datepicker動態日期禁用

我有兩個相互影響的日期選擇器。一個是例如「開始日期」,另一個是「結束日期」。我不想爲兩個日期選擇器創建驗證,我想消除具有無效日期的選項(即結束日期早於開始日期,反之亦然)。

有沒有辦法在日期選擇上重新觸發日期禁用屬性? (重新觸發其他日期選擇器的禁用日期)

我的plunkr:我有一個開始日期和結束日期,就像您打開每個日期選擇器時看到的一樣,您不能選擇高於結束日期的開始日期反之亦然。但是,如果我將開始日期更改爲11/21,我希望更新結束日期的datepicker,以便11/20不再可點擊。有沒有辦法做到這一點?

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

回答

8

這是可能做到這一點使用最小值和最大值結合看採摘屬性值。 看看http://plnkr.co/edit/W5pb1boMLOHZFnWkMU8o?p=preview

+0

完美的工作,謝謝! – changus

+0

偉大的工作,謝謝 – jayM

+0

從你的掠奪者,我看到一個缺陷。如果我首先選擇結束日期(10/2/2014),然後選擇開始日期並單擊今天(10/0/2014)。它允許我選擇今天(10/8/2014)作爲開始日期,該日期大於結束日期(10/2/2014) –

4

你真的不需要所有的javascript。 這裏是以前解決方案的一個分支。

http://plnkr.co/edit/kXkzCeBTlxOpOyZKfTiN

如果你有兩個輸入如

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

它會自動工作,並禁用於開始日期之前 通知NG-模型=「結束日期」分任的最後一天=「StartDate」,這就是你所需要的。

0

我已經使用了在startDate和endDate中添加ng-change的簡單解決方案。如果startDate更改,則將endDate的minDate設置爲startDate,對於endDate也一樣。希望有助於