2012-05-09 70 views
2

jQuery的日期選擇器我有一個基於數據綁定從jQuery UI datepicker change event not caught by KnockoutJS的Javascript使用淘汰賽

這工作得很好,並且只要還有日期格式爲DD-MM-YY與基因敲除和jQuery日期選擇器的問題。只要我將我的dateform更改爲MM-yy,數據綁定不再更新。無論我在列表框中選擇什麼,日期都會設置爲今天的日期。關於如何使這項工作的任何提示?我有多個級別的多個控件,所以我更不想使用這個解決方案:Knockout with Jquery UI datepicker, MM/YY only

在此先感謝。

的Javascript:

ko.bindingHandlers.datepicker = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     $(element).datepicker({ 
      dateFormat: "dd-mm-yy", 
      //dateFormat: "MM-yy", 
      changeYear: true, 
      changeMonth: true 
     }); 

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

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

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

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

HTML:

<td><input class="dateField" data-bind="datepicker: plannedStartDate" /></td> 

視圖模型:

... 
self.plannedStartDate = ko.observable(); 
... 

回答

0

這看起來就像是用jQuery日期選擇器的bug。無論何時使用該格式,getDate都不會返回正確的值。

我有一個部分解決方案,可以爲您工作,重新創建您在鏈接中指定的解決方案。

http://jsfiddle.net/madcapnmckay/tKxAT/

它使用datejs解析來從日期選擇器背面的datetext。自從信息丟失以來不是很好,但這取決於你是否想要。如果沒有,我建議你可能不得不尋找另一個日期選擇器或改變你的格式以包含日期。

希望這會有所幫助。