仅当KnockoutJS中的值不同于0或为null时才启用

Enable only if is different than 0 or null in KnockoutJS

本文关键字:null 或为 启用 不同于 KnockoutJS 仅当      更新时间:2023-09-26

目标

仅当输入不同于零(0)、零零(00)或空/空时才启用按钮。

问题

我不知道语法。

守则

HTML:

<input class="quantity float-left" name="productQuantity" maxlength="2"
       type="text" 
       data-bind="value: ProductLayout.itemQuantity, valueUpdate: 'afterkeydown'" 
/>
<span class="float-left">/@(Model["MeasureName"])(s)</span>
<button class="btn btn-add btn-mini float-right" 
        data-bind="enable: ProductLayout.itemQuantityValid">Adicionar</button>

JS:在下面的代码中,我说明了我想做什么。会发生什么?如果存在&& null,则该按钮不启用。

function ProductLayoutViewModel() {
    var self = this;
    self.itemQuantity = ko.observable("");
    self.itemQuantityValid = ko.computed(function () {
        return self.itemQuantity() != "0" && null;
    }, this);
};

请看一下这个小提琴

视图:

<input class="quantity float-left" name="productQuantity" maxlength="2" type="text" 
       data-bind="value: itemQuantity, valueUpdate: 'afterkeydown'" />
<span class="float-left">/@(Model["MeasureName"])(s)</span>
<button class="btn btn-add btn-mini float-right"
        data-bind="enable: itemQuantityValid">Adicionar</button>

ViewModel:

function ProductLayoutViewModel() {
    var self = this;
    self.itemQuantity = ko.observable("");
    self.itemQuantityValid = ko.computed(function () {
        var q = self.itemQuantity();
        return q != "0" && q != '00' && q != null && q != '';
    }, this);
};
var vm = new ProductLayoutViewModel();
ko.applyBindings(vm);

请参阅fiddle

我想你是想写的

return self.itemQuantity() != "0" && self.itemQuantity() != null;