【发布时间】:2016-01-27 15:11:07
【问题描述】:
我有一个下拉菜单,允许用户选择定价选项,其中之一是“折扣”。如果选择“折扣”,我需要将成本字段变为负值。这很容易实现。
我的问题是:在输入正值后,如何通过检测定价选项下拉菜单是否在“折扣”上来使成本字段为负。下面是我的模型的简化版本,如果下拉更改,我有什么逻辑将数字变为负数。
var row = function (pricing, c) {
var self = this;
self.cost = ko.observable(c ? c : "0").extend({ required: true });
self.pricingOptions = ko.observableArray([
{ id: "1", value: "Freight" },
{ id: "2", value: "Discount" }
]);
self.selectedPricing = ko.observable(pricing ? pricing : "");
self.selectedPricing.subscribe(function (value) {
if (value == "Discount")
{
if (parseFloat(self.cost()) > 0) {
self.cost(-parseFloat(self.cost()));
}
} else {
if (parseFloat(self.cost()) < 0) {
self.cost(-parseFloat(self.cost()));
}
}
});
}
编辑:这是我所拥有的 jsfiddle:http://jsfiddle.net/tt1mtb19/3/
请注意,如果已选择折扣,则当您在字段中输入金额时,无论如何它都会保持正数。仅当您将下拉菜单更改回运费,然后更改为折扣时,它才会变为负数。
【问题讨论】:
-
你能用
self.discount = ko.computed(function(){return self.cost() * -1})这样的东西吗 -
@dan 我已经在这样做了,那不是我的问题。
标签: knockout.js