<script type="text/javascript">
let selectedLocation; // To keep the value
$(document).ready(function(){
// Initializing data table
$("#tableLocations").DataTable({
responsive: true,
pageLength: 2, // Just change as you wish
fnDrawCallback: function(oSettings) {
// Uncheck all the radios
$(`#tableLocations input[name="baseLocation"]`).prop('checked', false);
// if we have already selected item, we can check it again
if (selectedLocation) $(`#tableLocations input[value="${selectedLocation}"]`).prop('checked', true);
},
});
// A jquery way of event late binding
$(document).on('click', '#tableLocations input[name="baseLocation"]', function () {
// Keep the last selected value
selectedLocation = $(this).val();
});
});
</script>
3条答案
按热度按时间1bqhqjot1#
我和你有同样的问题。我找到了一个解决这个问题的办法。请在下面的完整示例中找到代码详细信息。
字符串
**说明:**在上面的代码中可以看到,我编写了一个自定义函数currentSelectedRadio(),并从fnDrawCallback调用它,因为每次更改页面时fnDrawCallback函数都会调用。同时,我们正在将先前选择的按钮值备份到全局var 'lastSelectedRadio'中。单选按钮的单击事件。我正在从全局变量lastSelectedRadio中取消选中以前选择的按钮的值,并将选中的属性添加到当前单选按钮。
但是请记住,datatable的另一个页面上的元素在DOM中将不可用。Datatable只将当前页面元素添加到DOM中。那么,我们如何才能获得所有在datatable中可用但在DOM中不可用的元素呢?是的,我们可以得到所有的元素,为此我们必须使用table.$(“”)语法迭代datatable,然后只能在选择当前按钮之前选中另一个页面上的单选按钮
ssm49v7z2#
我也有同样的问题,我很感谢@Suresh提供了解决方案。我遵循了类似的方法,但在实现时略有不同。我希望这些信息对其他人有帮助。
表格示例:
字符串
JavaScript:
型
rxztt3cl3#
我遇到了同样的问题,我在这里找到了一个帖子:http://datatables.net/forums/discussion/20484/how-to-avoid-multiple-radio-buttons-selection-when-paginating-a-table
每次切换页面时都会调用drawCallback函数。因此,可以将当前在页面上选中的button的值与在其他页面上选中的button的值进行比较。(你需要保存上次选中按钮的值)如果它们不匹配,那么只需要清除当前页面上按钮的check属性。
希望对你有帮助。