根据Knockout.js中的复选框绑定日期选择器最大日期

时间:2013-09-27 20:17:10

标签: javascript knockout.js knockout-mvc

我有一个日期选择器,其最大可选日期是未来六个月。如果我选中一个复选框,则最大可选日期可以是将来的任何时间。我正在尝试使用Knockout.js。

这将是我的日期选择器输入选项:

<input id="newRequestStartDate"
       type="text"
       data-bind="sfDatePicker: request.startDate, sfDatePickerOptions: startDateOptions, disable: summaryHasInvalidDays()"
       id="newTimeOffRequestStartDate"
       class="sf-form-input"
       data-range-group="ptoRange"
       name="newTimeOffRequestStartDate"
/>

这将是我的复选框输入:

<input type="checkbox"
       id="globalOverrideCheckbox"
       data-bind="checked: request.isGlobalOverride, disable: summaryHasInvalidDays()"
/>

我有一个基于此的订阅绑定:

self.request.isGlobalOverride.subscribe(self.updateMaxAllowableDateInFuture);

和可订阅的代码是:

this.updateMaxAllowableDateInFuture = (function (isGlobalOverrideSet) {
     if (isGlobalOverrideSet) {
          _maxAllowableDateInFuture = _dateTenYearsFromNow;
          //this.startDateOptions.maxDate = _maxAllowableDateInFuture;
          self.destroyDatePicker();
     }
     return _maxAllowableDateInFuture;
});

1 个答案:

答案 0 :(得分:0)

两个步骤:

  1. 将maxDate更改为可观察的,并直接在绑定中包含maxDate(这可能需要修改sfDatePicker绑定器)。

  2. 更新sfDatePicker绑定,以便在maxDate observable更改时更改datepicker上的设置。

  3. 如果您想了解更多详情,请提供sfDatePicker活页夹的代码