【问题标题】:How can I show more than one white space character in a row in a select2 data row?如何在 select2 数据行中的一行中显示多个空格字符?
【发布时间】:2016-09-24 18:19:06
【问题描述】:

我使用Select2 并使用{data: [{id:1, text: "..."}] 方法来定义选项。我想通过对由多个空格字符组成的子字符串进行分组来格式化每个选项。所以是这样的:

{data: [
    {id:1, text: "Trees     -     Oak"},
    {id:2, text: "Trees     -     Pine"},
    {id:3, text: "Seas      -     North Sea"},
    {id:4, text: "Seas      -     Baltic Sea"}
]}

当我这样做时,它们在结果下拉列表中显示为一个空格(处理空格的默认 HTML 方式)。当我使用   而不是空格时,它们在下拉菜单中显示为字符串“ ”而不是空格。

{data: [
    {id:1, text: "Trees   -   Oak"},
    {id:2, text: "Trees   -   Pine"},
    {id:3, text: "Seas   -   North Sea"},
    {id:4, text: "Seas   -   Baltic Sea"}
]}

有没有办法保留我在数据项的text 属性中定义的所有空格?

【问题讨论】:

  • 为什么不使用实际的不间断空格字符,即\u00a0
  • 啊,是的,我不知道那个。我试过了,它也有效。缺点是\u00a0 搜索空格时不会匹配到。但是,除此之外,这是一个不错的选择。

标签: javascript html select2


【解决方案1】:

您不想改用optgroups 吗?

{data: [
  {
    text: "Trees",
    children: [
      {id:1, text: "Oak"},
      {id:2, text: "Pine"},
    ]
  },
  {
    text: "Seas",
    children: [
      {id:1, text: "North Sea"},
      {id:2, text: "Baltic Sea"},
    ]
  },
]}

或尝试添加

white-space: pre;

在选择项的css-class中保留字符串中的所有空格。

正如 koenpeters 在 cmets 中所说,默认主题 css 将如下所示:

.select2-container--default .select2-results__option {
  white-space: pre;
}

【讨论】:

  • 然后尝试设置 white-space: pre;在 select 的项目 css 类中
  • 您可能已经确定了要修补的确切班级名称吗?我会将其名称添加到答案中,以便其他阅读此内容的人可以节省一些时间。
  • 我使用了.select2-container--default .select2-results__option,但请记住这仅适用于默认主题。
【解决方案2】:

Yuri Gor 给出的答案的替代方法是使用   并将 escapeMarkup 包含到 select2 创建中。

$("#isOfTheSelectNode").select2({
    escapeMarkup: function (m) { return m; }
});

缺点是:

  • 没有任何 html 标记将被转义,这可能会导致奇怪 option 元素,如果文本包含 HTML。
  • 搜索空格时将不匹配包含  的项目。

如果您只想允许多个空间被渲染,我认为 Yuri Gor 的答案会更好。

【讨论】:

  • 在您的情况下,您可以在选项中使用一些额外的 html/css,例如 Trees-oak 并在 css 类中设置每个段的所需宽度和文本对齐方式(并根据需要设置所有这些内容)我从未使用过 select2,但在纯 html 中选择每个选项都可能有“值”属性,所以,可以将 select2 中的搜索配置为针对此值而不是内部文本?如果是这样 - 您可以用没有额外标签或 html 实体的干净文本填充值。
【解决方案3】:

white-space: normal; 添加到您的风格中

.select2-container .select2-selection--multiple .select2-selection__rendered {
    display: inline;
    list-style: none;
    padding: 0;
    white-space: normal;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2021-04-26
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多