我开发了一个带有淘汰赛/微风的项目。
我想知道是否可以强制淘汰以将可观察对象标记为已更改(即使焦点仍在现场)。我的目标是通知用户,每当他开始更改日期时,他都可以保存它(立即显示一个按钮)。例如,我有一个带日期的输入字段。用户开始在此字段中编辑日期。当用户离开该字段的焦点时,observable 应该只解释新的编码日期。但我想Save button
在他开始在输入字段中输入内容时显示我的内容。我希望我很清楚。
这是我的 bindingHandlers,用于在我的输入中处理编辑日期:
ko.bindingHandlers.dateRW = {
//dateRW --> the 'read-write' version used both for displaying & updating dates
init: function (element, valueAccessor, allBindingsAccessor) {
var observable = valueAccessor();
var value = ko.utils.unwrapObservable(valueAccessor);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function () {
var myDate = moment($(element).val(), "DD/MM/YYYY");
observable(myDate.toDate());
});
//ko.utils.registerEventHandler(element, "keyup", function () {
// As soon as user begin to type something, I would like to show my save button
//});
},
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var date = (typeof value !== 'undefined') ? moment(value) : null;
var dateFormatted = (date != null) ? date.format('DD/MM/YYYY') : '';
$(element).val(dateFormatted);
}
};
而我的观点:
<input type="text" data-bind="dateRW: myDate" />
不幸的是valueUpdate: 'afterkeydown'
不起作用,因为我使用的是自定义 bindingHandlers。
希望有人能指出我正确的方向。
谢谢。