我有以下用户界面:
我们对与其频率相关的收入进行限制。例如,如果选择月度,则用户可以输入的最大值为999999.99
,但是,如果选择每两周 ,则用户可输入的最大值为499999.99
如何使用KnockoutJS及其验证库(Knockout-Validation)实现此目的?
现在,我有以下内容:
self.validate = ko.validatedObservable([
self.usualTakeHomePayAmount.extend({
min: {
params: 0,
message: minCurrencyAmountErrorMessage.toString()
},
max: {
params: 999999.99,
message: maxCurrencyAmountErrorMessage.toString()
}
})]);
但显然没有考虑频率字段(屏幕截图中标题为How often。)
如何实现所需的验证?
答案 0 :(得分:0)
您可以创建一个计算器,根据所选频率返回最大值,然后使用它。
self.maxValue = ko.pureComputed(function() {
switch(self.selectedFrequency())
case "fortnightly":
return 499999.99
case "monthly":
return 999999.99
default:
return 999999.99
});
然后在需要引用最大值的地方使用此计算值:
self.validate = ko.validatedObservable([
self.usualTakeHomePayAmount.extend({
min: {
params: 0,
message: minCurrencyAmountErrorMessage.toString()
},
max: {
params: self.maxValue(),
message: maxCurrencyAmountErrorMessage.toString()
}
})]);
我假设你在一个名为selectedFrequency的可观察对象中有频率。我没有测试任何这个,但希望它能让你了解一种可以采取的方法。