无法在服务器端分页使用的tablesorter CONTENTEDITABLE部件(Cannot u

2019-10-21 01:24发布

我有一直良好,因为一些个月的客户端分页一个项目的tablesorter。 现在我必须把它转化为服务器端分页,但我不能把它与所有我使用与客户端版本的功能工作。

由于在主题,我的问题是使CONTENTEDITABLE功能正常工作。

我做了什么来实现这一点,是写一个自定义函数结合于tablesorterPager配置ajaxProcessing处理程序:

ajaxProcessing: function (data) {
                    if (data && data.hasOwnProperty('rows')) {
                        var str = "", d = data.rows,
                            // total number of rows (required)
                            total = data.total_rows,
                            // len should match pager set size (c.size)
                            len = d.length;

                        for (var i = 0; i < len; i++) {                          
                            str += '<tr>';
                            for (var column = 0; column < orderedFieldMapping.length; column++) {
                                if (orderedFieldMapping[column].toUpperCase() != 'ACTIVATIONDATE' || bReadOnly)
                                    str += '<td class="' + orderedFieldMapping[column].toUpperCase() + '"' + ($('#' + orderedFieldMapping[column].toUpperCase()).prop('checked') ? '' : 'style="display:none;"') + '><div>' + (eval('d[i].' + orderedFieldMapping[column]) != null ? eval('d[i].' + orderedFieldMapping[column]) : '') + '</div></td>';
                                else
                                    str += '<td class="' + orderedFieldMapping[column].toUpperCase() + '"' + ($('#' + orderedFieldMapping[column].toUpperCase()).prop('checked') ? '' : 'style="display:none;"') + '><div ' + (eval('d[i].' + orderedFieldMapping[column]) != null ? '' : 'class="emptyPlaceholder"') + 'onmouseup="javascript:SelectActivationDateText(this);" onblur="javascript:RestoreCellStyle(this);">' + (eval('d[i].' + orderedFieldMapping[column]) != null ? eval('d[i].' + orderedFieldMapping[column]) : emptyTextString) + '</div></td>';
                            }
                            str += '</tr>';
                        }

                        // in version 2.10, you can optionally return $(rows) a set of table rows within a jQuery object
                        return [total, $(str)];
                    }
                },

请注意,我在一个jQuery对象中返回一组表中的行,选择允许的文档例如评论(在此代码示例中也可见)的规定。 为什么我做这种事的原因是,我需要控制表标记添加样式,处理程序和类。 这就是我在内部进行循环做的,它不是很重要的知道到底什么我做什么。 最重要的是,我得到预期的结果,并标记为我的表,和服务器端分页工作没有问题,但CONTENTEDITABLE小部件不工作。

我得到JS控制台,所有的工作只是罚款上没有警告,但我不能编辑我标记为可编辑的列。 我可以看到,也看标记,因为contenteditable属性,是不存在的。 当然,窗口小部件inintialized和配置(以同样的方式,这是在以前的版本,客户端分页)。

一些小部件的故障,它指向另一个提示(也许):我设法手动添加的标记中包含contenteditable属性(我在上面贴了同样的函数内)只是为了看看它会给我一些信息。 在这种情况下,期望我可以编辑的内容,但我没有得到任何处理程序editComplete事件和数据接收设置不应用。 我仍然可以手动添加处理程序和自定义代码得到它像预期的那样,但它是坏的,我不希望使用黑客得到一个已经实现的功能正常工作。

任何暗示将不胜感激,感谢大家谁将会回答。

Answer 1:

我想我看到的问题。 该CONTENTEDITABLE小部件不重新应用contenteditable在表格单元格内的元素当内容被更新(通过寻呼机或其他)财产。

所以,这绝对是一个错误,我只是开了票: https://github.com/Mottie/tablesorter/issues/732

在此同时,您可以将CONTENTEDITABLE属性添加到您的标记中的div:

str += '<td><div contenteditable>...</div></td>';


文章来源: Cannot use contenteditable widget on server side paged tablesorter