2
我參考jQuery UI datepicker change event not caught by KnockoutJS使datetimepicker與淘汰賽一起工作。所以我基本上取代datepicker
與datetimepicker
使下面的代碼jquery ui datetimepicker不與淘汰賽
ko.bindingHandlers.datetimepicker = {
init: function(element, valueAccessor, allBindingsAccessor) {
//initialize datetimepicker with some optional options
var options = allBindingsAccessor().datetimepickerOptions || {};
$(element).datetimepicker(options);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function() {
var observable = valueAccessor();
observable($(element).datetimepicker("getDate"));
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).datetimepicker("destroy");
});
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
//handle date data coming via json from Microsoft
if (String(value).indexOf('/Date(') == 0) {
value = new Date(parseInt(value.replace(/\/Date\((.*?)\)\//gi, "$1")));
}
current = $(element).datetimepicker("getDate");
if (value - current !== 0) {
$(element).datetimepicker("setDate", value);
}
}
};
和HTML:
<input data-bind="datetimepicker: myDate, datetimepickerOptions: { minDate: new Date() }" />
隨着代碼,它看起來像工作,但它未能更新變成相應的淘汰賽觀察到哪些用戶。
我調試的代碼,並發現
datetimepicker("getDate")
給人以00:00僅日期部分。observable($(element).datetimepicker("getDate"));
有時會拋出異常,因爲observable(x)有時不存在。
有沒有人解決這個問題?
更新:通過捕獲偶爾的異常來解決#2問題。
您可能希望使用最新的jQuery UI的版本試試。我看到了與更新到最新的jQuery/jQuery UI的小提琴相同的行爲。 http://jsfiddle.net/rniemeyer/MWHNg/ –
@RPNiemeyer非常感謝。這是我需要的信息。如果你不介意,你可以回答,以便我可以接受。再次感謝。 –