【问题标题】:Submitting all form data after filtering过滤后提交所有表单数据
【发布时间】:2016-11-16 14:09:00
【问题描述】:

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

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

即使用户碰巧打开了搜索过滤器,是否有任何方法可以使用表单发布发布所有行?

【问题讨论】:

  • 您能否发布一些代码,以便我们准确了解您的表单和数据表是如何设置的?

标签: jquery filter datatables forms http-post


【解决方案1】:

解决方案

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

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

【讨论】:

  • 但是如果我没有使用数据表,并且如果我在我的 html 表中隐藏了一个有输入控件的行,这仍然会被提交,所以这就是我感到困惑的原因。
  • @leora,jQuery Datatables 从 DOM 中删除隐藏行,这就是数据没有被提交的原因。
猜你喜欢
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 2013-01-17
  • 2021-07-02
  • 1970-01-01
相关资源
最近更新 更多