默认情况下,让jQuery DataTables提交所有行,而不仅仅是在搜索时显示的行

ing

我使用jQuery DataTables在我的系统中显示记录,通常将其<form>包装和一些内联选项(例如,复选框作为表的列之一)。当我使用内置搜索框时,它会缩小显示列表的范围。如果我编辑这些记录之一,则仅提交显示的记录POST表单,而不提交所有记录。我想改变这种行为。

例如,假设我有一个像这样的dataTable:

+---------+--------+
+ Name    | Option |
+---------+--------+
+ Adam    | [X]    |
+ Bob     | [X]    |
+ Chris   | [ ]    |
+---------+--------+

我搜索Chris,该表如下所示:

+---------+--------+
+ Name    | Option |
+---------+--------+
+ Chris   | [ ]    |
+---------+--------+

我选中他的选项框,然后提交表格。因为提交时其他两个没有显示,所以其他两个没有POST,所以我得到了以下结果:

+---------+--------+
+ Name    | Option |
+---------+--------+
+ Adam    | [ ]    |
+ Bob     | [ ]    |
+ Chris   | [X]    |
+---------+--------+

显然,我想保持AdamBob的状态。默认情况下,如何在dataTables中更改此行为?

如果不可能,如何为每个dataTable实例启用它

我无法在dataTables文档](https://editor.datatables.net/examples/inline-editing/submitData.html)或现有的Google和StackOverflow搜索中找到(或可能根本不理解)答案

Gyrocode.com

1:通过POST提交

下面的示例仅适用于复选框,如果您还有其他元素(例如单选按钮,文本框等),则需要对其进行调整。它会在页面上创建缺少元素数据的隐藏元素。

// Handle form submission event
$('#frm-example').on('submit', function(e){
   var form = this;

   // Iterate over all checkboxes in the table
   table.$('input[type="checkbox"]').each(function(){
      // If checkbox doesn't exist in DOM
      if(!$.contains(document, this)){
         // If checkbox is checked
         if(this.checked){
            // Create a hidden element 
            $(form).append(
               $('<input>')
                  .attr('type', 'hidden')
                  .attr('name', this.name)
                  .val(this.value)
            );
         }
      } 
   });
});

请参阅jQuery DataTables:如何提交所有页面表单数据-直接提交以获取更多详细信息和示例。

2:通过Ajax提交

另一个解决方案是通过Ajax提交表单,请参阅表单输入以获取可能解决方案的示例。

$()可被用来获得从文档节点,而不管寻呼的,订货等本实施例示出了$()被用来获得从所述表中的所有的输入元件。

$(document).ready(function() {
    var table = $('#example').DataTable();
 
    $('form').on('submit', function() {
        var data = table.$('input, select').serialize();

        // console.log('Submitting data', data);

        // Submit form data via ajax
        $.ajax({
           type: "POST",
           url: '/script/handler.ashx',
           data: data,
           success: function(data){
              // console.log('Server response', data);
           }
        });

        // Prevent form submission
        return false;
    } );
} );

请参阅jQuery DataTables:如何提交所有页面表单数据-通过Ajax提交以获取更多详细信息和示例。

3.如果所有数据都在一页上,请重置过滤

您可以search()在提交表单之前使用API方法重置过滤

例如:

$('#form').on('submit', function(){
   $('#example').DataTable().search('').draw(false);
});

但是,仅将提交当前页面上的数据,因此该解决方案并非在所有情况下均有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

显示所有Elasticsearch聚合结果/存储桶,而不仅仅是10

引导表悬停在所有行上,而不仅仅是其他所有行

默认情况下如何显示ionicPopover

默认情况下显示silverstripe ModelAdmin

Docusign:向所有各方显示预先填写的标签(不仅仅是分配的)

使用JQuery中的复选框进行过滤时,如何在数据属性的完整字符串中进行搜索,而不仅仅是完全匹配?

默认情况下选择一行,并使用jQuery DataTables发送XHR请求

如何在MVC中使用SQL查询显示所有行数据而不仅仅是显示第一行

如何使用jQuery cookie记住网站所有URL的触发类,而不仅仅是页面

搜索所有iBeacon,而不仅仅是使用特定的UUID

说服grep输出所有行,而不仅仅是具有匹配项的行

jQuery验证-是否有将规则附加到表单上而不仅仅是其元素上的规则?

如何从所有div中(不仅仅是同级兄弟)中删除带有jQuery的类?

jQuery-让选择器更改所有适当的属性,而不仅仅是找到的第一个属性

jQuery .children返回所有内容,而不仅仅是请求的内容

jQuery选择器传递所有实例,而不仅仅是传递事件的那个实例

从数据框中删除重复行的所有副本(而不仅仅是重复副本)

页面加载时,默认情况下应折叠jQuery手风琴

如何在没有选择列表的情况下切换jQuery的盲目效果(默认)

ng-select会在列表中显示所有可用选项,而不仅仅是一行?

Jquery 问题影响所有元素,而不仅仅是一个

egrep 输出所有内容,而不仅仅是与列表中的模式匹配的行

跳过给定类的所有后代(不仅仅是直接子代)的 jQuery 选择器

事务何时提交(默认情况下)?

查找数据框中所有行的情绪分析,而不仅仅是一行

如何使用 jQuery 显示/隐藏隐藏的 - 默认情况下 - 表格行?

如何在不更改 URL 的情况下重定向(完全,而不仅仅是一页)

触发器插入所有行而不仅仅是一行

JQuery 默认情况下延迟淡出,当 mouseenter 保持可见时,在 mouseout 淡出后