Javascript 如何创建至少有一个复选框处于活动状态的复选框列表

Javascript 如何创建至少有一个复选框处于活动状态的复选框列表,javascript,checkbox,knockout.js,Javascript,Checkbox,Knockout.js,我有一个包含2个复选框的示例。我想确保始终有1个复选框处于活动状态,这意味着复选框1或复选框2或两者都可以处于活动状态。我该怎么做 函数DemoItem(id、名称){ var self=这个; self.id=ko.可观察(id); self.Name=ko.observable(Name); 自选择=可观察(假); } 函数ViewModel(){ var self=这个; self.availableItems=ko.observableArray(); self.AssociatedI

我有一个包含2个复选框的示例。我想确保始终有1个复选框处于活动状态,这意味着复选框1或复选框2或两者都可以处于活动状态。我该怎么做

函数DemoItem(id、名称){
var self=这个;
self.id=ko.可观察(id);
self.Name=ko.observable(Name);
自选择=可观察(假);
}
函数ViewModel(){
var self=这个;
self.availableItems=ko.observableArray();
self.AssociatedItemId=ko.observableArray();
self.init=函数(){
self.availableItems.push(新的DemoItem(1,'One'));
self.availableItems.push(新的DemoItem(2,'Two'));
};
self.toggleAssociation=功能(项目){
if(item.Selected()==true)console.log(“分离项”+item.id());
else console.log(“关联项”+item.id());
item.Selected(!(item.Selected());
返回true;
};
}
var viewModel=新的viewModel();
应用绑定(视图模型);
init()

可用项目:


关联项目ID:

self.toggleAssociation
中,每当您取消选中某项时,您首先通过循环查看
self.availableItems
并计算选中的
item.Selected()==true
来计算选中的
项的数量。如果只有一个,那么不要取消选中它

self.toggleAssociation = function (item) {
    if (item.Selected() === true) {
        var howManyAreSelected = 0;

        ko.utils.arrayForEach(self.availableItems(), function (item) {
            if (item.Selected() === true) {
                howManyAreSelected += 1;
            }
        });

        if (howManyAreSelected > 1) {
            item.Selected(false);
        }
    }
    else {
        item.Selected(true);
    }
    return true;
};