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

Binding a datepicker max date in future based on checkbox in Knockout.js

本文关键字:日期 选择器 将来 复选框 Knockout js 根据 绑定      更新时间:2023-09-26

我有一个日期选择器,其最大可选日期是未来六个月。如果我选中一个复选框,则最大可选日期可以是将来的任何时间。我正在尝试用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. 将 maxDate 更改为可观察对象,并直接在绑定中包含 maxDate(这可能需要修改 sfDatePicker 绑定程序)。

  2. 更新 sfDatePicker 绑定,以便在 maxDate 可观察对象更改时更改日期选取器上的设置。

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