Meteor 复选框组 - 至少选中一个复选框
Meteor checkbox group - At least one checkbox selected
这是我到目前为止的复选框。
我希望始终选中至少一个复选框 - 如何实现?
解决方案:
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
}
});
}
});
我想避免使用 jquery 并只使用 javascript 和 underscorejs。
提前致谢!
文
在将当前项目更新为check: 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
}
});
}
});
这是我到目前为止的复选框。 我希望始终选中至少一个复选框 - 如何实现?
解决方案:
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
}
});
}
});
我想避免使用 jquery 并只使用 javascript 和 underscorejs。
提前致谢! 文
在将当前项目更新为check: 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
}
});
}
});