【发布时间】: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