Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 发布非'的表单元素;在数据表中不可见_Jquery_Datatables - Fatal编程技术网

Jquery 发布非'的表单元素;在数据表中不可见

Jquery 发布非'的表单元素;在数据表中不可见,jquery,datatables,Jquery,Datatables,我正在表单中包含的表上使用一个名为Datatables的jQuery插件,该表将包含许多表单元素 我在页面上有一个savechanges按钮,它将执行一个AJAX请求,根据用户输入的内容更新数据库 我的问题是,它将只发布当前在Datatable中可见的表单元素。在我的一个例子中,有74行(都包含几个字段)。要显示的默认记录数为10 因此,在提交表单时,只提交10行的表单元素。我要提交所有行的字段——在本例中,所有74行的字段值 有人能解决这个问题吗?谢谢。数据表会销毁隐藏的行并将它们从DOM中取

我正在表单中包含的表上使用一个名为Datatables的jQuery插件,该表将包含许多表单元素

我在页面上有一个savechanges按钮,它将执行一个AJAX请求,根据用户输入的内容更新数据库

我的问题是,它将只发布当前在Datatable中可见的表单元素。在我的一个例子中,有74行(都包含几个字段)。要显示的默认记录数为10

因此,在提交表单时,只提交10行的表单元素。我要提交所有行的字段——在本例中,所有74行的字段值


有人能解决这个问题吗?谢谢。

数据表会销毁隐藏的行并将它们从DOM中取出。如果需要进行提交,则应在提交之前使用FNGETHIDDENODES()检索隐藏行。看一看这些页面

$.fn.dataTableExt.oApi.fngethiddenodes=函数(oSettings)
{
/*注意,DataTables“private”函数的使用被认为是“oApi”对象*/
var anNodes=this.oApi.\u fngetrnodes(oSettings);
var和splay=$('tbody tr',oSettings.nTable);
/*删除正在显示的节点*/

对于(var i=0;i您是否使用服务器端源代码来创建表?我使用的是经典ASP来构建表。我的意思是-您是每次都从服务器获取隐藏的行,还是输出整个表,然后数据表为您分页?哦,对了,我没有在服务器端隐藏任何行。我让数据表完成所有分页。@ManseUK datatables处理分页并销毁隐藏行。非常感谢。我们在文档中查找此代码,但找不到。快速提问
jQuery.inArray
$之间有什么不同。inArray
?@garethliews它们完全一样,
$
jQuery
的别名,如果我理解的话我的想法是,我应该如何处理anNodes来提交表单?我必须以某种方式将每一行再次附加到表中?@El_Hoy我的表有复选框,所以我以这种方式使用它
var hiddenCheckboxes=$(oTable.fngethiddenodes()).find('input[type=checkbox]:checked');
这将返回所有选中的复选框。然后将此数据与AJAX数据一起发送。
$.fn.dataTableExt.oApi.fnGetHiddenNodes = function ( oSettings )
{
    /* Note the use of a DataTables 'private' function thought the 'oApi' object */
    var anNodes = this.oApi._fnGetTrNodes( oSettings );
    var anDisplay = $('tbody tr', oSettings.nTable);

    /* Remove nodes which are being displayed */
    for ( var i=0 ; i<anDisplay.length ; i++ )
    {
        var iIndex = jQuery.inArray( anDisplay[i], anNodes );
        if ( iIndex != -1 )
        {
            anNodes.splice( iIndex, 1 );
        }
    }

    /* Fire back the array to the caller */
    return anNodes;
}