仅在KnockoutJS中不同于0或null时启用

时间:2013-06-27 13:18:45

标签: javascript knockout.js

目标

如果输入不同于零(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);
};

2 个答案:

答案 0 :(得分:1)

请查看此fiddle

查看:

<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);

<强> See fiddle

答案 1 :(得分:0)

我认为你打算写

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