【发布时间】:2013-12-21 06:30:36
【问题描述】:
我有一种情况需要验证我的视图模型中的字段的最大数量。但是,最大数量必须是可变的,并且根据在此模型之外选择的 UI 项目进行计算。我试图将 observable 作为参数包含在我的自定义验证器中,但是当值更改时它似乎没有更新。
我有一种感觉,一旦验证代码第一次执行,它就会保留参数。
未使用 Knockout 的列表的 HTML
<select id="ContentsReplacementAmount">
<option value="25000">£25000</option>
<option value="50000">£50000</option>
<option value="75000">£75000</option>
</select>
这是我正在使用的代码的简化版本。
var SpecifiedValuablesViewModel = function (maxSpecifiedItemAmount) {
var self = this;
self.maxSpecifiedItemAmount = ko.observable(maxSpecifiedItemAmount);
self.amountToAdd = ko.observable().extend({
validation: {
validator: function (val, max) {
return val <= max;
},
message: 'The amount must be a maximum of £{0}',
params: self.maxSpecifiedItemAmount()
}
});
};
var specifiedValuablesViewModel = new SpecifiedValuablesViewModel($('#ContentsReplacementAmount').val());
ko.applyBindings(ko.validatedObservable(specifiedValuablesViewModel), document.getElementById('SpecifiedValuables'));
maxSpecifiedAmount 之外的事件
$('#ContentsReplacementAmount').on('change', function () {
specifiedValuablesViewModel.maxSpecifiedItemAmount(parseInt($(this).val()));
});
我的问题是,我怎样才能做到这一点?
【问题讨论】:
-
通常我会在 $(asdf).val() 中得到一个数字的字符串表示形式,通常 === 或
-
它的类型在这个例子中是一个字符串,但在我的应用程序中不是。它只是不会改变。还有其他想法吗?我会更新上面的代码
标签: javascript validation knockout.js knockout-validation