Jquery 带限制的knockoutjs值绑定

Jquery 带限制的knockoutjs值绑定,jquery,knockout.js,Jquery,Knockout.js,我正在使用knockoutjs实现一个购物车。 其中一个要求是允许客户更改项目的数量。所以我自然这么做了 <input type="text" data-bind="value: quantity"/> 但是还有另一个要求,购物车中的总金额应该有一个上限 我可以使用jquery截取“change”事件并在那里添加一些逻辑,但我想知道是否有任何本机的淘汰方法来执行类似的操作 <input type="text" data-bind="value: quantity where

我正在使用knockoutjs实现一个购物车。 其中一个要求是允许客户更改项目的数量。所以我自然这么做了

<input type="text" data-bind="value: quantity"/>
但是还有另一个要求,购物车中的总金额应该有一个上限

我可以使用jquery截取“change”事件并在那里添加一些逻辑,但我想知道是否有任何本机的淘汰方法来执行类似的操作

<input type="text" data-bind="value: quantity where quantity*uniprice <= maxDollarAmount"/>

改用计算的可观测值。它允许您编写逻辑来处理绑定到的值


您应该使用计算淘汰:

视图模型:

Item = function(){
    ...
    _self.quantity = ko.observable(1);
    _self.attemptedQuantity = ko.computed({
        read: function () {
            return _self.quantity();
        },
        write: function (value) {
            if (value * uniprice <= maxDollarAmount) {
                self.quantity(value);
            } else {
                // alert or something
            }
        }
    });
    ...
}   
Item=function(){
...
_自身数量=可观察的ko(1);
_self.attemptedQuantity=ko.computed({
读:函数(){
返回_self.quantity();
},
写入:函数(值){
如果(值*单价)
Item = function(){
    ...
    _self.quantity = ko.observable(1);
    _self.attemptedQuantity = ko.computed({
        read: function () {
            return _self.quantity();
        },
        write: function (value) {
            if (value * uniprice <= maxDollarAmount) {
                self.quantity(value);
            } else {
                // alert or something
            }
        }
    });
    ...
}   
<input type="text" data-bind="value: attemptedQuantity"/>