DataTables非首页选中的单选按钮ID无法传递到Django URL如何解决
问题修复方案
该问题可以自行修复,不是DataTables本身的故障。
问题原因
DataTables为了提升渲染性能,默认只会将当前分页的内容渲染到DOM中,其他分页的元素是切换分页时才动态插入到页面的。你在页面初始化时直接给$('input[type="radio"]')绑定点击事件,仅能绑定到页面加载时已经存在的第一页单选按钮,后续分页动态生成的单选按钮没有绑定对应事件,因此点击后不会触发更新编辑链接的逻辑。
修复代码
将原来的单选按钮点击事件绑定逻辑替换为事件委托写法,把事件绑定到始终存在的上层元素(比如document、表格本身),即可监听到所有动态生成的单选按钮的点击事件:
$(function(){ // 事件委托绑定到document,适配所有动态生成的单选按钮 $(document).on('click', 'input[type="radio"][name="radio_id"]', function(){ if ($(this).is(':checked')) { let link = $('#edit') let baseHref = link.attr("href").split("?radio_id=")[0] link.attr("href", baseHref + "?radio_id=" + $(this).val()); } }); });
可选优化说明
你当前代码里所有单选按钮的id都为radio_id,存在id重复的问题,不符合HTML规范,如有需要可以修改为id="radio_id_{{list.id}}"避免id冲突,该修改不影响现有功能运行。
内容的提问来源于stack exchange,提问作者HudsonBarroso
相关产品推荐
相关产品推荐

