KnockoutJS でキャッチされない jQuery UI の datepicker 変更イベントからのノックアウトと jquery datepicker を使用したデータ バインディングに基づいて質問があります。
これは、日付形式が dd-mm-yy である限り、正常に機能します。dateform at を MM-yy に変更するとすぐに、データ バインディングは更新されなくなります。リストボックスで何を選択しても、日付は今日の日付に設定されます。これを機能させる方法に関するヒントはありますか?私は複数のレベルで複数のコントロールを持っているので、このソリューションを使用したくないと思います: Jquery UI datepicker を使用した Knockout、MM/YY のみ
前もって感謝します。
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();
...