checkbox - 更改时取消禁用 for 循环中的复选框
问题描述
我有一个可观察数组中的复选框列表,我想控制每行选中复选框时的启用和禁用。例如,第一次在对话框中输入时,只会启用“复制表单”和“取消链接”。如果选中“复制表单”,则“工作流程”和“报告”将被启用,但“取消链接”将被禁用。如果选中“取消链接”,则所有其他复选框的值都将被清除并禁用。
这是我要完成的屏幕截图:
代码(删除了一些使我试图描述的内容复杂化的东西):
html:
<tbody data-bind="foreach: SubAccountsToCopy()">
<tr>
<td class="col-sm-4" data-bind="text: linkedAccountName"></td>
<td class="col-sm-1" data-bind="text: linkedVersion"></td>
<td class="col-sm-1" data-bind="text: version"></td>
<td>
<input style="vertical-align: middle" id="copyForm" type="checkbox" data-bind="checked: copyForm, attr: { 'id': 'copyForm' + $index()}">
<label data-bind="attr: { 'for': 'copyForm' + $index()}">Copy Form</label>
</td>
<td title="Also copy the Form Workflow " style="width:100px;">
<input style="vertical-align: middle" type="checkbox" data-bind="checked: copyWorkflow, attr: { 'id': 'copyWorkflow' + $index()}" />
<label data-bind="attr: { 'for': 'copyWorkflow' + $index()}">Workflow</label>
</td>
<td title="Also copy the Report Settings " style="width:100px;">
<input style="vertical-align: middle" type="checkbox" data-bind="checked: copyReportSettings, attr: { 'id': 'copyReportSettings' + $index()}" />
<label data-bind="attr: { 'for': 'copyReportSettings' + $index()}">Reports</label>
</td>
<td title="Will unlink the SubAccount form from the Master Account " style="width:100px;">
<input style="vertical-align: middle" type="checkbox" data-bind="checked: unlink, attr: { 'id': 'unlink' + $index()}" />
<label data-bind="attr: { 'for': 'unlink' + $index()}">Unlink</label>
</td>
</tr>
javascript 端是一个映射到 observable 的 JSON 数组。
解决方案
所以解决方案比我想象的要容易一些。由于所有复选框都是可观察的,它们会对更改做出反应,因此您可以在逻辑中使用它们:
<tbody data-bind="foreach: SubAccountsToCopy()">
<tr>
<td class="col-sm-4" data-bind="text: linkedAccountName"></td>
<td class="col-sm-1" data-bind="text: linkedVersion"></td>
<td class="col-sm-1" data-bind="text: version"></td>
<td title="Copy latest version of the form to this SubAccount" style="width:120px;">
<input style="vertical-align: middle" id="copyForm" type="checkbox" data-bind="checked: copyForm, disable: unlink, attr: { 'id': 'copyForm' + $index()}">
<label data-bind=" disable: unlink, style: {color: unlink() ? 'lightgray' : 'black'}, attr: { 'for': 'copyForm' + $index()}">Copy Form</label>
</td>
<td title="Also copy the Form Workflow " style="width:100px;">
<input style="vertical-align: middle" type="checkbox" data-bind="checked: copyWorkflow, enable: copyForm, attr: { 'id': 'copyWorkflow' + $index()}" />
<label data-bind="style: {color: copyForm() ? 'black' : 'lightgray'}, attr: { 'for': 'copyWorkflow' + $index()}">Workflow</label>
</td>
<td title="Also copy the Report Settings " style="width:100px;">
<input style="vertical-align: middle" type="checkbox" data-bind="checked: copyReportSettings, enable: copyForm, attr: { 'id': 'copyReportSettings' + $index()}" />
<label data-bind="style: {color: copyForm() ? 'black' : 'lightgray'}, attr: { 'for': 'copyReportSettings' + $index()}">Reports</label>
</td>
<td title="Will unlink the SubAccount form from the Master Account " style="width:100px;">
<input style="vertical-align: middle" type="checkbox" data-bind="checked: unlink, disable: copyForm, attr: { 'id': 'unlink' + $index()}" />
<label data-bind="style: {color: copyForm() ? 'lightgray' : 'black'}, attr: { 'for': 'unlink' + $index()}">Unlink</label>
</td>
</tr>
推荐阅读
- python-3.x - 在 Pandas 和 Numpy 中合并 DataFrame
- php - 如何按每行 PHP 的索引存储 3 个键
- sql - 有没有办法让sql输出按月排列的信息,同时显示每个月的百分比?
- css - 边距,浮动在显示弹性中不起作用
- r - for循环按组计算平均值(也忽略NA)
- javascript - 如何从一组数组中返回索引 - 1
- angular - Angular(点击)方法返回未定义
- javascript - 添加验证以通知用户如果他们忘记了一个值并收到第二个和第三个值为空的错误
- c# - 添加 CustomXmlPart 后 Word 无法打开文档
- python-3.x - 是否可以以编程方式使用 pip 安装 python 库?