2013-02-26 253 views
3

我需要使用Shift键在shift查询中选择多行,与shift-key select函数相同,并存储选定的行项目在一个变量中。另外我需要使用点击事件选择多行。如何使用shift键在jQuery数据表中选择多行

使用单个变量,我需要传递实时点击行和轮班选择行。我如何做到这一点?

这不能正常工作,也不会为所选行存储单个变量。我错在哪里?

我的代码:

var aSelected = []; 
var lastSelected; 

$('#table tr').live('click', function (event) { 
    var tableRow = $(this).closest("tr").prevAll("tr").length + 1; 

    var id = this.cells[0].innerHTML; 
    var index = jQuery.inArray(id, aSelected); 
    if (index === -1) { 
     aSelected.push(id); 
    } else { 
     aSelected.splice(index, 1); 
    } 

    $(this).toggleClass('row_selected'); 

    if (event.shiftKey) { 
     var table = $('#table '); 
     var start = Math.min(tableRow, lastSelected); 
     var end = Math.max(tableRow, lastSelected); 

     for (var i = start; i < end; i++) { 
      $('#table').each(function() { 
       table.find('tr:gt(' + (start - 1) + '):lt(' + (end) + ')').addClass('row_selected'); 
      }); 
     } 

    } else { 

     lastSelected = $(this).closest("tr").prevAll("tr").length + 1; 
    } 
}); 

比如我有20行。有3个原因我选择行并传递选定的行ID 1.使用Ctrl键选择多行并传递2.使用Shift键选择下一个10行并传递3.使用Shift键选择下一个10使用Ctrl键其它10行以及使所述12行

+0

aSelected.splice (指数,1);你使用这行代码,但你没有添加任何内容到aSelected中,你对这行代码的目的是什么? – OQJF 2013-02-26 06:10:20

+0

只是删除已选择的行。多数民众赞成y使用此线 – 2013-02-26 06:15:19

回答

1

行和额外2行通过使用此代码使用以下代码

 $('#tableId').dataTable({ 

    "sDom": 'T<"clear">lfrtip', 
    "oTableTools": { 
     "sRowSelect": "multi", 
     "aButtons": [ "select_all", "select_none" ] 
    } 
}); 

您使用shift键选择与出多行

+0

但我怎么通过选定的行ID到我的控制器 – 2013-02-26 05:34:33

+0

你需要通过一个ID或多个ID的 – PSR 2013-02-26 05:35:25

+0

我需要发送多个ID。有一段时间,我选择行只是Shift键和一些时间使用Ctrl。在某些时候使用shift键10行和使用Ctrl 2行共12行。我这样崩溃这些都是条件如何发送数据Ctrl和移位行选择相同的ID – 2013-02-26 05:38:50