过滤后提交所有表单数据

leo*_*ora 5 forms jquery http-post filter datatables

我在表单内有一个html表。我将DataTables应用于表以添加过滤和排序。这很好。

唯一的问题是,如果用户在搜索框中输入数据进行过滤,然后提交表单,则仅提交可见行。我以为DataTables只是隐藏了由搜索过滤的行,因此所有内容都应该以表格的形式存在,但事实并非如此。

即使用户碰巧启用了搜索过滤器,也可以通过表单发布所有行吗?

Gyr*_*com 5

解决方案

使用以下技术提交表中所有页面的数据,而不仅仅是第一页上的过滤数据。

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)
         );
      } 
   });      
});
Run Code Online (Sandbox Code Playgroud)

演示

有关代码和演示,请参阅此示例

链接

有关更多详细信息和示例,请参阅jQuery DataTables:如何提交所有页面表单数据