过滤后提交所有表单数据

时间:2016-07-13 20:16:31

标签: jquery filter datatables html-form-post

我有一个表格内的html表。我将DataTables应用到表中以添加过滤和排序。这很有效。

唯一的问题是,如果用户在搜索框中输入数据以过滤然后提交表单,则只提交可见行。我假设DataTables只是隐藏了搜索过滤的行,因此一切都应该仍然在表单中,但似乎并非如此。

即使用户碰巧有搜索过滤器,有没有办法使用表单发布所有行?

1 个答案:

答案 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以获取代码和演示。

LINKS

有关详细信息和示例,请参阅jQuery DataTables: How to submit all pages form data