本文详解如何在 datatable 表格中,当用户勾选带有 `data-sisa` 属性的复选框时,自动将对应 `sisa` 值填入同一行右侧“diterima”列的数字输入框中,并支持多选批量赋值。
在使用 DataTable 渲染动态表格时,常需实现「勾选即填充」的交互逻辑——例如本例中:每行复选框携带 data-sisa 值,勾选后需将该值写入同级行中 class="open-input" 的 元素(位于“diterima”列)。关键挑战在于精准定位目标输入框(不能全局用 #inputID,因 ID 重复会导致仅首行生效)。
你的原始代码中使用 $("#inputID").val(sisa) 存在严重问题:id="inputID" 在多行中重复,违反 HTML 唯一性规范,jQuery 仅匹配第一个元素。应改用相对定位——从触发事件的复选框出发,向上找到所在
$('body').on('change', 'input[type="checkbox"].editor-active', function() {
const $checkbox = $(this);
const sisa = $checkbo
x.data('sisa'); // 安全读取 data-sisa
const $input = $checkbox.closest('tr').find('.open-input');
if ($input.length) {
$input.val(this.checked ? sisa : 0);
}
});{"data": "id", "class": "text-center",
render: function () {
return '';
}
}const safeSisa = Number(sisa) || 0; $input.val(this.checked ? safeSisa : 0);
通过此方案,你不仅能准确完成单行联动,还能确保表格扩展性与维护性,真正实现「所见即所得」的数据驱动交互。