【问题标题】:Remove spaces from before and after a string inside a tag in a contenteditable div删除 contenteditable div 中标签内字符串前后的空格
【发布时间】:2016-02-23 15:36:48
【问题描述】:

我正在尝试删除粗体标记中字符串前后的空格。

功能: 我创建了一个文本编辑器,当您在其中输入文本并选择文本并按粗体时,它会将文本加粗,当您按 html 按钮时,它会显示在下一个窗口中生成的 html。

面临的问题: 当我尝试给制表符空间然后输入文本,并选择文本以及空格并将其加粗时,它会与空白空间一起加粗。因此,当我在 html 窗口中查看 html 时,我能够看到字符串开头的空格。 我使用的代码从字符串中删除了所有空格,但我只想修剪开头和开头,并且仍然像这样在字符串之间保留空格。任何帮助将不胜感激。

例如: 当您尝试将字符串与空格一起加粗时 ' fdgfg gfdgfg fdgfg' ,这就是它在编辑器中的外观。 生成的 html 看起来像 <b>  fdgfg gfdgfg fdgfg</b> 所以我写了一个删除这些空格的代码,但它删除了所有空格并留下<b>fdgfggfdgfgfdgfg</b>。但我真正想要的是<b>fdgfg gfdgfg fdgfg</b> 没有空格。

脚本:

//shows the html
  $("#show-html").click(function(){      
    var html = $("#textEditor").html();      
    html = html.replace(/ |\s/gi, '');
  });

DEMO:

PS:它应该只删除开始和结束的空格,它应该保留文本之间的空格。例如 " abcd efgh " 这应该被修剪为 "abcd efgh" 文本之间的空格不应该被删除。

【问题讨论】:

  • “例如:当您尝试将字符串与空格一起加粗时 'fdgfg gfdgfg fdgfg' ,这就是它在编辑器中的样子。” 为什么  如果选项卡突出显示并单击“HTML”按钮,则从 <b>  fdgfg gfdgfg fdgfg</b> 中删除?
  • @guest271314 我正在尝试查看在另一个 div 中生成的 html,当我这样做时,我能够看到  在字符串的开始和结束处加粗标记。 ,我想删除它。如果你看到演示,你就会明白我实际上想要做什么。
  • 是的,尽管  将是html 输入的一部分,在编辑器中选择?要求不包括编辑器输入的 1:1 表示:html 在显示窗口呈现?
  • 是的,我只是想以一种易于理解的方式向用户展示生成的 html 标签。我不想让他们看到那些  或在标签的开头和结尾产生空格。
  • 应该&nbsp,标签之间保留空格字符吗?

标签: javascript jquery trim spaces


【解决方案1】:

你可以试试.trim()

 str = "     something Here  ";
    console.log (str.trim());

或者这样使用

$.trim(str);

【讨论】:

  • 这也适用于 HTML 生成的代码吗? (即输入字符串中的所有 s)
  • @ochi 在生成 html 后不要使用它.. 在此之前使用它.. 当您单击粗体按钮时从 textarea 捕获文本时.. 它应该在将其转换为 html 之前修剪字符串
【解决方案2】:

一种方法是遍历每个<b> 元素,删除所有连续的空格,然后修剪字符串。

Updated Example

$('#textEditor b').each(function () {
  $(this).text(function () {
    return $(this).text().replace(/\s+/g, ' ').trim();
  });
});

简单输入:

"     this     is   a  string  "

输出:

<b>this is a string</b>

【讨论】:

  • Croxier:这也删除了文本之间的多余空格,我只想删除开头和结尾。查看我的帖子脚本示例以更好地理解
猜你喜欢
  • 1970-01-01
  • 2019-01-13
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
相关资源
最近更新 更多