【问题标题】:Binding a datepicker max date in future based on checkbox in Knockout.js根据 Knockout.js 中的复选框绑定未来的日期选择器最大日期
【发布时间】:2013-10-04 06:12:49
【问题描述】:

我有一个日期选择器,它的最大可选日期是未来六个月。如果我选择一个复选框,最大可选择日期可以是未来的任何时间。我正在尝试使用 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;
});

【问题讨论】:

  • 两个步骤:首先,将 maxDate 更改为 observable,并将 maxDate 直接包含在绑定中(这可能需要修改 sfDatePicker 绑定器)。其次,更新 sfDatePicker 绑定,以便在 maxDate 可观察值更改时更改日期选择器上的设置。如果您想了解更多详细信息,请提供 sfDatePicker binder 的代码。
  • @CodeThug 将其作为答案发布,这样这个问题就可以摆脱“未回答”。此外,在原始帖子中,datepicker 有 2 个 id 属性 - 这不应该是。理想情况下,人们会完全避免使用 id 属性,尤其是在处理淘汰赛时,因为您永远不必使用 DOM。

标签: javascript knockout.js knockout-mvc


【解决方案1】:

两步:

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

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

如果您想了解更多详细信息,请提供 sfDatePicker binder 的代码

【讨论】:

    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    相关资源
    最近更新 更多