【发布时间】:2017-02-07 20:19:07
【问题描述】:
我有很多对日期选择器。第一个日期选择器是间隔的开始,第二个是它的结束。从逻辑上讲,第一个日期选择器的值不应超过第二个,反之亦然。我写了这段代码:
HTML:
<input type="text" class="datepicker" data-bind="datepicker: firstDate, datepickerOptions: { endDate: secondDate }" />
<input type="text" class="datepicker" data-bind="datepicker: secondDate, datepickerOptions: { startDate: firstDate }" />
还有 JS:
function model() {
var self = this;
self.firstDate = ko.observable();
self.secondDate = ko.observable();
}
ko.bindingHandlers.datepicker = {
init: function(element, valueAccessor, allBindingsAccessor) {
//initialize datepicker with some optional options
var options = allBindingsAccessor().datepickerOptions || {};
$(element).datepicker(options);
//when a user changes the date, update the view model
ko.utils.registerEventHandler(element, "changeDate", function(event) {
var value = valueAccessor();
if (ko.isObservable(value)) {
value(event.date);
}
});
},
update: function(element, valueAccessor) {
var widget = $(element).data("datepicker");
//when the view model is updated, update the widget
if (widget) {
widget.date = ko.utils.unwrapObservable(valueAccessor());
if (widget.date) {
widget.setValue();
}
}
}
};
ko.applyBindings(new model());
$('body').on('focus', ".datepicker", function() {
$(this).datepicker({
format: 'dd.mm.yyyy',
language: 'ru',
forceParse: true,
todayBtn: true,
clearBtn: true,
autoclose: true
});
});
值已绑定但 minDate 未在日期选择时更新。请问有人能指出我的错误吗?
这是broken JsFiddle 和working one。因此,只要我将datepickerOptions 添加到我的代码中,它就会被破坏。
【问题讨论】:
-
试试
attr:{minDate:value} -
@Rajesh,不,不幸的是它不起作用。
-
@mr.nothing,你能提供一个可行的例子吗? (不仅是 html/js 代码 - 一个完整的 jsfiddle/sn-p 可以工作并显示两个 datpicker 工作)。
-
@Dekel,我完全是前端新手,但我会尽力做到这一点。
标签: javascript jquery jquery-ui knockout.js datepicker