我有一个表格内的html表。我将DataTables应用到表中以添加过滤和排序。这很有效。
唯一的问题是,如果用户在搜索框中输入数据以过滤然后提交表单,则只提交可见行。我假设DataTables只是隐藏了搜索过滤的行,因此一切都应该仍然在表单中,但似乎并非如此。
即使用户碰巧有搜索过滤器,有没有办法使用表单发布所有行?
答案 0 :(得分:4)
使用以下技术从表格中的所有页面提交数据,而不仅仅是在第一页上过滤数据。
var table = $('#example').DataTable();
// Handle form submission event
$('#frm-example').on('submit', function(e){
var form = this;
// Encode a set of form elements from all pages as an array of names and values
var params = table.$('input,select,textarea').serializeArray();
// Iterate over all form elements
$.each(params, function(){
// If element doesn't exist in DOM
if(!$.contains(document, form[this.name])){
// Create a hidden element
$(form).append(
$('<input>')
.attr('type', 'hidden')
.attr('name', this.name)
.val(this.value)
);
}
});
});
请参阅this example以获取代码和演示。
有关详细信息和示例,请参阅jQuery DataTables: How to submit all pages form data。