Javascript 结合两个观察值的敲除JS验证?
我有以下用户界面: 我们对其频率有收入限制。例如,如果选择“每月”,则用户可以输入的最大值为Javascript 结合两个观察值的敲除JS验证?,javascript,validation,knockout.js,Javascript,Validation,Knockout.js,我有以下用户界面: 我们对其频率有收入限制。例如,如果选择“每月”,则用户可以输入的最大值为999999.99,但是,如果选择“每两周”,则用户可以输入的最大值为499999.99 如何使用KnockoutJS及其验证库()实现这一点 现在,我有以下几点: self.validate = ko.validatedObservable([ self.usualTakeHomePayAmount.extend({ min: { params: 0, messag
999999.99
,但是,如果选择“每两周”,则用户可以输入的最大值为499999.99
如何使用KnockoutJS及其验证库()实现这一点
现在,我有以下几点:
self.validate = ko.validatedObservable([
self.usualTakeHomePayAmount.extend({
min: {
params: 0,
message: minCurrencyAmountErrorMessage.toString()
},
max: {
params: 999999.99,
message: maxCurrencyAmountErrorMessage.toString()
}
})]);
但很明显,这并没有考虑到频率场(在屏幕截图中标题为“频率”)
如何实现所需的验证?您可以创建一个计算值,根据所选频率返回最大金额,然后使用该值
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的可观测频率。我没有对此进行过任何测试,但希望它能为您提供一种方法。这似乎是一个不错的想法,但不起作用。假设您是每月一次,然后键入
9999999.99
,但随后您从每月一次更改为每两周一次,验证不会再次触发,以告知您现在验证无效!你的想法给了我一个解决这个问题的办法。我创建了一个函数,我在其中传递频率,它将返回最大值。