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