嘗試創建自定義綁定,該自定義綁定將檢測兩個輸入框中的某一個的值何時發生更改,何時發生更改我想啓用「保存」按鈕。最初「保存」按鈕被禁用。 我似乎無法讓它檢測到事件,我試圖在兩個輸入框上使用isDirty標誌,所以如果任何一個檢測到更改,我會顯示'保存'按鈕。使用事件綁定來檢測用戶何時進行更改會更好嗎?我認爲自定義綁定會更好。 isDirty標誌正在爲我的錯誤消息顯示工作。無法檢測自定義綁定中的事件
HTML:
<span>Global Percentage:</span>
<input id="spaceGlobalPercentage" type="text" data-bind="value: globalPercent, valueUpdate: 'afterkeydown'" class="topInput" />
<span>Adjustment Factor:</span>
<input type="text" data-bind="value: adjustmentFactor, valueUpdate: 'afterkeydown'"class="topInput" />
<input type = "button" class="submitPercentCancelButton" id="submitPercentButton" value="Save" data-bind="click: save, enable: enableButton, buttonVisible: enableButton">
//定義綁定
ko.bindingHandlers.buttonVisible = {
update: function (element, valueAccessor) {
//var value = valueAccessor(valueAccessor());
//var buttonUnwrapped = ko.utils.unwrapObservable(value);
var value1Unwrapped = ko.utils.unwrapObservable(valueAccessor(my.vm.globalPercent.isDirty));
var value2Unwrapped = ko.utils.unwrapObservable(valueAccessor(my.vm.adjustmentFactor.isDirty));
if (value1Unwrapped || value2Unwrapped) {
my.vm.enableButton(true);
}
}
};
//檢查,如果事情發生了轉變
ko.subscribable.fn.trackDirtyFlag = function() {
var original = this();
this.isDirty = ko.computed(function() {
return this() !== original;
}, this);
return this;
};
//視圖模型
my.vm = {
globalPercent: ko.observable("").extend({ required: "Enter a Global Percent, between 1 and 100." }).trackDirtyFlag(),
adjustmentFactor: ko.observable("").extend({ required: "Enter an Adjustment Factor, between 1 and 100." }).trackDirtyFlag(),
enableButton: ko.observable(false),
..... };
//申請綁定
ko.applyBindings(my.vm);
感謝任何建議或協助
你能不能把它放在一個的jsfiddle? – WolfgangCodes 2013-03-20 01:22:33