You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tabulator.js中如何保留含小于号的单元格及列表编辑器值?

解决Tabulator列表编辑器中带小于号的字符串被截断的问题

问题原因

Tabulator的列表编辑器默认会将选项内容当作HTML解析,小于号<会被识别为HTML标签的起始标记,导致其后的内容被当作未闭合的标签而截断,只显示<之前的部分。

解决方案

1. 转义HTML特殊字符

将选项中的<替换为HTML实体&lt;,让编辑器将其视为普通文本而非HTML标签。

  • 手动转义数组:
const exampleOptions = ["a&lt;b", "b&lt;c", "c&lt;d"];

然后配置列定义:

{
  title: "示例列",
  field: "example",
  editor: "select",
  editorParams: {
    values: exampleOptions
  }
}
  • 批量转义动态生成的选项:
    如果选项是动态获取的,可以写一个简单的转义函数批量处理:
function escapeHtml(str) {
  return str.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

// 原选项数组
const rawOptions = ["a<b", "b<c", "c<d"];
// 转义后得到可用的选项数组
const exampleOptions = rawOptions.map(escapeHtml);

2. 强制单元格以纯文本格式渲染

除了转义选项内容,还可以给列添加formatter: "plaintext"配置,确保单元格显示时将内容当作纯文本处理,避免HTML解析:

{
  title: "示例列",
  field: "example",
  formatter: "plaintext",
  editor: "select",
  editorParams: {
    values: exampleOptions // 这里使用转义后的选项数组
  }
}

3. 调用setValue()时的处理

如果通过setValue()方法设置值,同样需要传入转义后的字符串,或者在设置前先转义:

// 转义后再设置
const value = "a<b";
table.getRow(id).getCell("example").setValue(escapeHtml(value));

内容的提问来源于stack exchange,提问作者Tetris Maniac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:07:34