如何在handsontable上过滤时仅在下拉菜单上显示不包含HTML内容的文本?

Posted

技术标签:

【中文标题】如何在handsontable上过滤时仅在下拉菜单上显示不包含HTML内容的文本?【英文标题】:How to show only the text not with HTML content on dropdown menu while filter on handsontable? 【发布时间】:2019-06-21 07:29:54 【问题描述】:

如何在过滤时摆脱在下拉菜单上呈现 html 内容?如果单元格或整列的单元格包含 HTML 数据,当我们应用过滤器时,在下拉列表中显示为 HTML 内容, 过滤时如何只显示不包含 HTML 内容的文本?

此小提琴包含示例(在第一列中)

var dataObj = [
    ['<a>Lorem</a>', 'ipsum', 'dolor', 'sit', '12/1/2015', 23],
    ['<a>adipiscing</a>', 'elit', 'Ut', 'imperdiet', '5/12/2015', 6],
    ['<a>Pellentesque</a>', 'vulputate', 'leo', 'semper', '10/23/2015', 26],
    ['<a>diam</a>', 'et', 'malesuada', 'libero', '12/1/2014', 98],
    ['<a>orci</a>', 'et', 'dignissim', 'hendrerit', '12/1/2016', 8.5]
  ];
  var example1 = document.getElementById('example1');

  var hot = new Handsontable(example1, 
    data: dataObj,
    columns: [
      type: 'text', renderer: 'html',
      type: 'text',
      type: 'text',
      type: 'text',
      type: 'date', dateFormat: 'M/D/YYYY',
      type: 'numeric'
    ],
    colHeaders: true,
    rowHeaders: true,
    dropdownMenu: true,
    dropdownMenu: ['filter_by_value', 'filter_action_bar'],
    filters: true
  );

FIDDLE

【问题讨论】:

【参考方案1】:

Handsontable 初始化器应该改为 -:

function firstColRenderer(instance, td, row, col, prop, value, cellProperties) 
  Handsontable.renderers.TextRenderer.apply(this, arguments);
  td.innerHTML = value.replace(/<(?:.|\n)*?>/gm, '');

var hot = new Handsontable(example1, 
    data: dataObj,
    columns: [
      type: 'text', renderer: 'html',
      type: 'text',
      type: 'text',
      type: 'text',
      type: 'date', dateFormat: 'M/D/YYYY',
      type: 'numeric'
    ],
    colHeaders: true,
    rowHeaders: true,
    dropdownMenu: true,
    dropdownMenu: ['filter_by_value', 'filter_action_bar'],
    filters: true,
    cells: function (row, col) 
      var cellProperties = ;
      var data = this.instance.getData();

      if (col === 0) 
        cellProperties.renderer = firstColRenderer; // uses function directly
      
      return cellProperties;
    
  );

【讨论】:

谢谢。但是过滤器上的下拉菜单内容与以前一样显示 HTML 内容。

以上是关于如何在handsontable上过滤时仅在下拉菜单上显示不包含HTML内容的文本?的主要内容,如果未能解决你的问题,请参考以下文章

Handsontable 下拉过滤器

Handsontable:更改下拉菜单宽度

Handsontable 下拉菜单有多个选择

如何在需要时仅提交隐藏/显示字段数据之一 - Laravel

如何在使用 opsworks 部署时仅在特定层中的第一个实例上运行命令?

单击关闭时仅停止一个下拉切换