Datatablesjquery插件-限制可选择的行数
Datatables jquery plugin - limit number of selectable rows
在数据表上启用行选择时,有没有办法限制用户可以选择的行数?我只希望用户能够在数据表中选择最多两行和最少一行,但我在数据表API中看不到描述如何做到这一点的选项?
我是否需要在每当用户选择一行时触发的回调中手动执行此操作?如果可能的话,我想避免这种情况。如有任何帮助或见解,我们将不胜感激。
使用数据表示例:
$(document).ready(function() {
/* Add a click handler to the rows - this could be used as a callback */
$("#example tbody tr").click( function( e ) {
if ( $(this).hasClass('row_selected') ) {
$(this).removeClass('row_selected');
}
// the following line do what you want
else if(oTable.$('tr.row_selected').length < 2) {
$(this).addClass('row_selected');
}
});
/* Add a click handler for the delete row */
$('#delete').click( function() {
var anSelected = fnGetSelected( oTable );
if ( anSelected.length !== 0 ) {
oTable.fnDeleteRow( anSelected[0] );
}
} );
/* Init the table */
oTable = $('#example').dataTable( );
} );
参考:选择单行
Ok让一个实现工作起来了,所以我最终做的不是限制用户可以选择的行数,而是添加了一些逻辑,每当用户点击另一行时,取消选择之前选择的任何行。我将选择顺序视为一个队列,这是我刚刚使用数组实现的,每次我将新行推送到队列时,任何以前的元素都会弹出。
队列的大小决定了用户可以选择的行数,通过将队列大小设置为两行,最多可以选择两行,当选择另一行时,将从队列中删除第一行。我使用下面的fnGetInstance()和fnDeselect()函数从我的数据表实例中取消选择行
//oldRow = first selected row from queue
var oTT = TableTools.fnGetInstance( 'MyDataTable' );
oTT.fnDeselect( oldRow );
正如在另一个答案中已经指出的,DataTables中有一个单行选择示例,但不幸的是,它并不完全可用且令人信服。从代码中可以明显看出,他们的解决方案是包外部的,但从测试经验中也可以看出,原生选择计数没有更新(这并不好)。
无论如何,如果我们想部分重用上述示例,那么它最重要的部分就是在table.on( 'deselect',
feauture尚未本地管理的情况下捕获事件的能力。是哪种情况?Ctrl+click
,通过它可以选择多个项目。因此,新的解决方案结构将是
table.on( 'click', 'tr', function () {
// https://stackoverflow.com/a/42266749/11323942
if ( event.ctrlKey ) {
//is ctrl + click
console.log("ctrl + click intercepted but forcing single select")
// NOW WHAT TO DO?
}
} );
现在最好的做法是将控制权交还给他们框架的标准事件。所以
// NOW WHAT TO DO?
table.rows({ selected: true }).deselect();
以上将选择限制为一行,但很容易扩展到不同数量的行,当然现在您可以以适当的方式执行任何重置操作
table.on( 'deselect', function ( e, dt, type, indexes ) {
if ( type === 'row' ) {
var deselectedrow = indexes[0]
console.log('deselected row', deselectedrow);
// perform whatever reset action you might need
}
} );
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 为什么在fabricjs中可选择的不适用于一组圆
- 如何在引导日期选取器中限制可选择的日期范围
- Datatablesjquery插件-限制可选择的行数
- 使用jQuery使动态元素可选择
- 拖放选择插件
- 使用选定和选择2插件的依赖多选下拉列表
- jQuery可选择多个项目
- jQuery UI 可选择在选定/未选定时添加/删除类
- 可选择序列化 jQuery UI::如何显示 html 标记中的内容而不是索引值
- 可选择限位止损
- 可选择的限制
- 数据表可编辑插件在数据表中动态添加行后不起作用
- 使用复选框更改背景颜色,可选择有限数量的复选框
- JQUERY可排序插件,当可拖动元素悬停在指定的元素上时启动函数
- 限制可选择的 DOM 复选框
- Jquery 可排序插件不允许在拖动元素时启动悬停功能
- 选择2插件不会根据输入消除选项
- 如何在 mtz.monthpicker 中设置可选择的最大月份
- JQuery可排序/可选择插件,带有拖拽'n'