Javascript 使用knockout绑定日期选择器';s mindate给另一个约会对象

Javascript 使用knockout绑定日期选择器';s mindate给另一个约会对象,javascript,jquery,jquery-ui,knockout.js,datepicker,Javascript,Jquery,Jquery Ui,Knockout.js,Datepicker,我有很多约会对象。第一个日期选择器是间隔的开始,第二个是间隔的结束。从逻辑上讲,第一个日期选择器的值不应超过第二个,反之亦然。我写了这段代码: HTML: 值已绑定,但minDate不会在选择日期时更新。请有人指出我的错误好吗 这是一个和一个。因此,只要我在代码中添加datepickerOptions,它就会被破坏。在每次更改时,您可以使用nextdatepicker的setStartDate功能将当前日期(当前元素的)添加到当前日期: update: function(element, val

我有很多约会对象。第一个日期选择器是间隔的开始,第二个是间隔的结束。从逻辑上讲,第一个日期选择器的值不应超过第二个,反之亦然。我写了这段代码:

HTML:

值已绑定,但minDate不会在选择日期时更新。请有人指出我的错误好吗


这是一个和一个。因此,只要我在代码中添加
datepickerOptions
,它就会被破坏。

在每次更改时,您可以使用nextdatepicker的
setStartDate
功能将当前日期(当前元素的)添加到当前日期:

update: function(element, valueAccessor) {
    $(element)
        .next('input.datepicker')
        .datepicker('setStartDate', $(element).datepicker('getDate'));
}
下面是一个正在使用的JSFIDLE(主要基于您的工作):

您正在将
ko.可观察的
选项输入日期选择器。日期选择器不自动知道如何处理这些

您必须在
update
方法中处理可观察选项。例如:

  var options = allBindingsAccessor().datepickerOptions || {};

  // Unwrap observable dates
  Object.keys(options).forEach(function(key) {
    options[key] = ko.unwrap(options[key]);
  });

  var widget = $(element).data("datepicker");
  if (options.startDate) widget.setStartDate(options.startDate);
  if (options.endDate) widget.setEndDate(options.endDate);

这里有一个更新的提琴:

try
attr:{minDate:value}
@Rajesh,不,不幸的是它不起作用。@mr.nothing,你能提供一个工作示例吗?(不仅是html/js代码-一个完整的JSFIDLE/SNIPTEP,可以显示两个数据采集器的工作情况)。@Dekel,我完全是前端新手,但我会尽力做到这一点。可能是重复的谢谢,但不幸的是它不适合我的需要。我需要将任意的日期选择器相互绑定。我的例子只是我所拥有的东西的简化。事实上,我的表单具有复杂的依赖关系,我必须处理这些依赖关系。您如何知道哪两个日期选择器是“绑定”的?
update: function(element, valueAccessor) {
    $(element)
        .next('input.datepicker')
        .datepicker('setStartDate', $(element).datepicker('getDate'));
}
  var options = allBindingsAccessor().datepickerOptions || {};

  // Unwrap observable dates
  Object.keys(options).forEach(function(key) {
    options[key] = ko.unwrap(options[key]);
  });

  var widget = $(element).data("datepicker");
  if (options.startDate) widget.setStartDate(options.startDate);
  if (options.endDate) widget.setEndDate(options.endDate);