我从jQuery数据表获取信息时遇到问题。 这是表格:
我想获取存储在表格中的信息。我试图这样做:
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代码,以便我以后可以分析它。
答案 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()
。
答案 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());
});