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非常感谢。这是我需要的信息。如果你不介意,你可以回答,以便我可以接受。再次感谢。 –