2016-04-28 71 views
0

我有一個jQuery UI對話框中的窗體,其中包含從KnockoutJS observableArray填充的日期列表。JqueryUI datepicker用當前日期覆蓋現有日期值 - KnockoutJS

<tbody data-bind="foreach: $root.selectedListOfDates"> 
<tr><td><input type="text" data-bind="datepicker: DueDate" /></td></tr> 
</tbody 

我的問題是,當我打開一個新的對象有日期的列表,在輸入框中輸入日期的原始值是由當前的日期(我相信當Jquery的日期選擇器加載)覆蓋。

這裏是我的日期選擇器綁定:

ko.bindingHandlers.datepicker = { 
    init: function(element, valueAccessor, allBindingsAccessor) { 
     var options = allBindingsAccessor().datepickerOptions || {}, 
      $el = $(element); 

     //initialize datepicker with some optional options 
     $el.datepicker(options); 

     //handle the field changing 
     ko.utils.registerEventHandler(element, "change", function() { 
      var observable = valueAccessor(); 
      observable($el.datepicker("getDate")); 
     }); 

     //handle disposal (if KO removes by the template binding) 
     ko.utils.domNodeDisposal.addDisposeCallback(element, function() { 
      $el.datepicker("destroy"); 
     }); 

    }, 
    update: function(element, valueAccessor) { 
     var value = ko.utils.unwrapObservable(valueAccessor()), 
      $el = $(element), 
      current = $el.datepicker("getDate"); 

     if (value - current !== 0) { 
      $el.datepicker("setDate", value); 
     } 
    } 
}; 

回答

0

請問您的選項變量初始化中包括gotoCurrent:真的嗎?我相信jQuery datepicker會默認使用新的Date()。

var options = options || {}; 
options.goToCurrent = true; 
$el.datepicker(options); 

http://api.jqueryui.com/datepicker/

+0

我在那裏,但還是同樣的結果扔了。 – PaulP

+0

您並未初始化初始化日期選擇器。 $ el.datapicker(選件); $ el.datepicker(「setDate」,valueAccessor()); – Jonathan

+0

它不喜歡它。未捕獲TypeError:無法處理綁定「datepicker:function(){return DueDate}」 消息:i.getTime不是函數 – PaulP