【发布时间】:2015-02-24 03:44:57
【问题描述】:
我正在将 jQuery Datatables 插件用于小表(12 行)。一些<input type="text" ... 字段允许编辑。当输入字段失去焦点时,我需要验证其值并可能更改字段值。如果不发出 .draw() 之后,我无法让 DataTables 识别修改后的输入字段值,但这会导致表格滚动到表格顶部。
有没有办法在发出 .draw() 后保持当前滚动位置?
$('#mytable').on('blur', 'input', function (e) {
var inputFieldId = this.id;
var inputFieldVal = $(this).val();
{ ... perform validation of field value ... }
$('#mytable').DataTable().rows().invalidate().draw();
});
编辑
我看到有人试图做与我相同的事情,他们表示以下代码对他们有用。这似乎是完成我需要的一种非常简单的方法,但我自己总是得到 scrollTop = 0 。有人知道我如何获取当前选定行的行索引吗?
var scrollPos = $(".dataTables_scrollBody").scrollTop();
$('#mytable').DataTable().rows().invalidate().draw(false);
$(".dataTables_scrollBody").scrollTop(scrollPos);
【问题讨论】:
-
对不起,我没有看到您的更改,您的代码是正确的,但请尝试使用 scrollTo() $(".dataTables_scrollBody").scrollTo('#IDROW')。其中 'IDROW' 是 ROW 的 ID,或者只是您更改的输入的 ID
-
万一你有多个具有相同className的dataTables,你应该使用ID选择器$("#divContrainer1 > .dataTables_scrollBody").scrollTop()
-
是的,你可以这样做。有一个肮脏的黑客,但你可以。在下面寻找我的答案。
标签: jquery datatables jquery-datatables