jQuery Datatables - 从其他页面检索信息

时间:2014-08-06 19:37:50

标签: javascript jquery datatables jquery-datatables

我从jQuery数据表获取信息时遇到问题。 这是表格:

table

我想获取存储在表格中的信息。我试图这样做:

var languages=[];
var people=[];

$("select[name='languageID']").each(function(){
    languages.push( $(this).val() );
});

$("input:hidden[name='personID']").each(function(){
    people.push( $(this).val() );
});

但它从当前所选页面获取值。如果我在屏幕截图中的情况下运行它,则只有第2页的值会被推送到数组。我试图检查第1页的值存储在哪里,但我找不到任何东西。我也在jQuery datatables homepage

上查找了它

有人可以帮忙吗?

此致

修改

所以我应该这样做:

table.column( 0 ).cache( 'search' ).each( function ( d ) { /*action here*/ } ); 

但应该采取什么措施呢?

当我调试table.column( 2 ).cache( 'search' );时,我得到了这个:

[   choose language ", " choose language ", " choose language ", " choose language ", " choose language ", " choose language " ]

这是“选择语言”选择中的第一个选项。我想,我需要一些东西,它会从列中的每个单元格返回html代码,以便我以后可以分析它。

4 个答案:

答案 0 :(得分:3)

这个比预期更难。首先,我尝试使用数据表data() API,但这会将下拉列表作为HTML字符串返回,这不是很有用。然后我遇到了关于数据表如何处理表单输入的article。诀窍是要认识到你的数据表对象可以从文档中检索节点而不管分页。

我可以在jsfiddle上找到现场演示。

编辑:根据OP的讨论,可以使用以下代码,而不是依赖嵌入式列选择器:

table.$('select[name="languageID"]').each(function(index, value{
    languages.push($(value).val());
});

答案 1 :(得分:1)

legacy api中,fnGetData应该返回您需要的内容。

$(document).ready(function() {
  oTable = $('#example').dataTable();

  oTable.$('#myButton').click( function () {
    var data = oTable.fnGetData( this );
    // ... do something with the array / object of data for the row
  } );
});

在新的api(v1.10 +)中,您可能需要column().cache()

http://datatables.net/reference/api/column().cache()

答案 2 :(得分:0)

在我的情况下,我应该将我的代码修改为:

var languages=[];
var people=[];

table
  .column(0)
  .nodes()
  .each(function(a){
    people.push( $(a).find("input:hidden[name='personID']").val() );
});

table
  .column(2)
  .nodes()
  .each(function(a){
    languages.push( $(a).find("select[name='languageID']").val() );
});  

答案 3 :(得分:0)

正如@ivan.sim 所说,获取完整的表格数据并不容易,尽管我最终 found a solution 可以用来从完整的表格中获取值(包括隐藏的输入等),包括页面不显示:

table.rows().every(function (rowIdx, tableLoop, rowLoop) {
    var data = this.node();
    console.log($(data).find('input').prop('checked'));
    console.log($(data).find('input[name=someField]').val());
});