Javascript Meteor复选框组-至少选中一个复选框

Javascript Meteor复选框组-至少选中一个复选框,javascript,checkbox,meteor,underscore.js,Javascript,Checkbox,Meteor,Underscore.js,这是我到目前为止的复选框。 我想有至少一个复选框检查所有的时间-如何才能做到这一点 解决方案: HTML: <form> <ul> {{#each checkbox}} <li> <input type="checkbox" checked="{{checked}}" class="toggle-checked"> {{name}}: {{ch

这是我到目前为止的复选框。 我想有至少一个复选框检查所有的时间-如何才能做到这一点

解决方案:

HTML:

    <form>
        <ul>
            {{#each checkbox}}
            <li>
                <input type="checkbox" checked="{{checked}}" class="toggle-checked"> {{name}}: {{checked}}
            </li>
            {{/each}}
        </ul>
    </form>

JS:

    Cbtest = new Mongo.Collection('cbtest');

    Template.checkbox.helpers({
        checkbox: function () {
            return Cbtest.find();
        }
    });

    Template.checkbox.events({
        "click .toggle-checked": function (event) {
            var self = this;
            //deactivate the checkboxes visually
            event.preventDefault();
            Meteor.call("setChecked", self._id, !self.checked);
        }
    });

    Meteor.methods({
        setChecked: function (checkboxId, setChecked) {
            //deactivate the checkbox value change in the database
            if (!setChecked && CheckboxResources.find({
                checked: true
            }).count() === 1)
            return;
            Cbtest.update(checkboxId, {
                $set: {
                    checked: setChecked
                }
            });
        }
    });
HTML:
    {{#每个复选框}
  • {{name}}:{{checked}
  • {{/每个}}
JS: Cbtest=新的Mongo.Collection('Cbtest'); Template.checkbox.helpers({ 复选框:函数(){ 返回Cbtest.find(); } }); Template.checkbox.events({ “点击。切换选中”:功能(事件){ var self=这个; //以可视方式停用复选框 event.preventDefault(); Meteor.call(“setChecked”,self.\u id,!self.checked); } }); 流星法({ setChecked:函数(checkboxId,setChecked){ //停用数据库中的复选框值更改 如果(!setChecked&&CheckboxResources.find({ 核对:正确 }).count()==1) 返回; Cbtest.update(checkboxId{ $set:{ 选中:设置选中 } }); } });
我希望避免使用jquery,只使用javascript和下划线

提前谢谢!
Vin

在将当前项目更新为
检查:false
之前,您只需确保至少有两个已检查的项目:

Meteor.methods({
    setChecked: function (checkboxId, setChecked) {
        if (!setChecked && Cbtest.find({checked: true}).count() === 1)
          return; // or throw error
        Cbtest.update(checkboxId, {
            $set: {
                checked: setChecked
            }
        });
    }
});

谢谢-这适用于数据库值,但最后一个复选框仍然可以取消选中-我如何防止?明白了!刚刚在Template.checkbox.events中添加了“event.preventDefault();”