首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果至少有一个复选框被选中,是否有一种方法可以启用按钮?

如果至少有一个复选框被选中,是否有一种方法可以启用按钮?
EN

Stack Overflow用户
提问于 2012-11-02 19:05:05
回答 1查看 1.9K关注 0票数 2

我想看看我是否能为这一点jQuery找到一个敲除的等价物:

http://jsfiddle.net/chriscoyier/BPhZe/76/

这就是我要走的路,但是所有的东西都绑定在相同的可观察范围内,所以它显然不起作用。

html:

代码语言:javascript
复制
<form>
<div>
    <input type="checkbox" name="option-1" id="option-1" data-bind="checked: buttonEnabled"> <label for="option-1">Option 1</label>
</div>
<div>
    <input type="checkbox" name="option-2" id="option-2" data-bind="checked: buttonEnabled"> <label for="option-2">Option 2</label>
</div>
<div>
    <input type="checkbox" name="option-3" id="option-3" data-bind="checked: buttonEnabled"> <label for="option-3">Option 3</label>
</div>
<div>
    <input type="checkbox" name="option-4" id="option-4" data-bind="checked: buttonEnabled"> <label for="option-4">Option 4</label>
</div>
<div>
    <input type="checkbox" name="option-5" id="option-5" data-bind="checked: buttonEnabled"> <label for="option-5">Option 5</label>
</div>

<div>
    <input type="button" value="Do thing" data-bind="enable: buttonEnabled">
</div>
</form>

javascript:

代码语言:javascript
复制
var viewModel = {
    buttonEnabled: ko.observable(true)
};

ko.applyBindings(viewModel);

http://jsfiddle.net/dludlow/WdWEW/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-02 19:16:12

是。请参阅此处更新的jsFiddle:http://jsfiddle.net/WdWEW/4/

我做了几件事。

  1. 我在每个复选框中添加了一个唯一的value属性
  2. 我将复选框绑定到名为options的视图模型上的一个新属性,该属性是一个observableArray
  3. 如果buttonEnabled属性的长度大于零,则将options更改为返回true的计算属性。

以下是更新的视图模型。

代码语言:javascript
复制
var viewModel = function() {
    var self = this;
    this.options = ko.observableArray(),
    this.buttonEnabled = ko.computed(function() {
       return self.options().length > 0;
    });
};

ko.applyBindings(new viewModel());

以下是更新后的视图:

代码语言:javascript
复制
<form>
    <div>
        <input type="checkbox" name="option-1" id="option-1" value="1" data-bind="checked: options"> <label for="option-1">Option 1</label>
    </div>
    <div>
        <input type="checkbox" name="option-2" id="option-2" value="2" data-bind="checked: options"> <label for="option-2">Option 2</label>
    </div>
    <div>
        <input type="checkbox" name="option-3" id="option-3" value="3" data-bind="checked: options"> <label for="option-3">Option 3</label>
    </div>
    <div>
        <input type="checkbox" name="option-4" id="option-4" value="4" data-bind="checked: options"> <label for="option-4">Option 4</label>
    </div>
    <div>
        <input type="checkbox" name="option-5" id="option-5" value="5" data-bind="checked: options"> <label for="option-5">Option 5</label>
    </div>

    <div>
        <input type="button" value="Do thing" data-bind="enable: buttonEnabled">
    </div>
</form>​
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13201514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档