我的HTML中有此表:
<table>
<thead>
<tr>
<th>Id</th>
<th>Actual weight</th>
<th>New weight</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>10</td>
<td><input data-id="{{ object.id }}" type="number" name="input_new_weight" /></td>
</tr>
<tr>
<td>1</td>
<td>20</td>
<td><input data-id="{{ object.id }}" type="number" name="input_new_weight" /></td>
</tr>
<!-- multiply by 10 the number of trs -->
</tbody>
</table>
并且我的javascript中有以下代码来获取输入值:
var new_weights = []
$("input[name='input_new_weight']").each(function(index, element){
if( $(this).val() != "" ){
var object_new_weight ={
id: $(this).data('id'),
new_weight: $(this).val()
}
new_weights.push(object_new_weight);
}
});
console.log(new_weights);
我正在使用jQuery DataTables插件来生成表,并具有过滤,分页,排列等功能。
在某些表中,我有10多个条目,因此分页在这里起作用。在上面的示例中,它将是2页:1和2。
执行我的JavaScript代码时,它只会从可见表格页面获取输入值。隐藏页面的输入无法获取!
让我们假设在第1页中,我将新的权重值分别设置为35、75和80,在第2页中,我将新的权重值设置为40、54、97。当我的javascript代码运行时,它只是从可见页中获取了这些值
请,有人可以告诉我为什么会这样吗?
答案 0 :(得分:0)
您知道数据表是动态生成表的,这非常简单,因此,当您在第1页上时,对应于第2页的输入(40、54、97)根本就没有
所以我想你已经把这段代码放到了全球范围内了
$("input[name='input_new_weight']").each(function(index, element){
//stuff
});
这只运行一次;在只有页面1的输入存在的情况下,页面的初始加载时,您宁愿需要的是能够每次重新运行数据表时重新运行代码。您可以使用page.dt
将此代码放在初始化数据表的代码之后
$('#yourtable').on('page.dt', function(){
$("input[name='input_new_weight']").each(function(index, element){
//stuff
});
});