頁面包含多行數據,每行前有複選框,點擊提交時需將勾選行的多組隱藏字段數據批量發送到後台。
input 隱藏域,初始設置 readonly 屬性(不隨表單提交)change 事件中,移除/添加該行所有隱藏域的 readonlyreadonly 的同名字段會被序列化為數組發送// HTML 結構示例
<tr>
<td><input type="checkbox" class="row-select"></td>
<td><input type="hidden" name="id" value="1" readonly></td>
<td><input type="hidden" name="name" value="Item1" readonly></td>
</tr>
// jQuery 邏輯
$('.row-select').change(function() {
var $row = $(this).closest('tr');
var readonly = !this.checked;
$row.find('input[type="hidden"]').prop('readonly', readonly);
});
// 後台接收 (Spring MVC 示例)
@PostMapping("/batch")
public void handle(@RequestParam("id") String[] ids,
@RequestParam("name") String[] names) {
// ids[0] 對應第一行勾選項,names[0] 同理
}
var payload = [];
$('.row-select:checked').each(function() {
var $row = $(this).closest('tr');
payload.push({
id: $row.find('[name="id"]').val(),
name: $row.find('[name="name"]').val()
});
});
$.post('/batch', { data: JSON.stringify(payload) });