【问题标题】:ContentEditable Replace String using JSContentEditable 使用 JS 替换字符串
【发布时间】:2012-03-17 13:37:01
【问题描述】:

我有一个 ContentEditable 部分。我想获取用户选择的内容,然后用新字符串替换它。

所以我会想要所选字符串的开始和结束,删除旧字符串,将新字符串放在适当的位置(会更长)。

例子:

Typed String: 'Hello, World!'
Selected String: 'World'
String to replace with: '** World **'

我想在所选单词周围添加“星号”,就像 StackOverflow 为使文本加粗所做的那样。

我在 StackOverflow 上阅读了无数问题,但没有人能回答这个问题。而且我尝试了很多不起作用的sn-ps。 :P。

注意:我使用的是 jQuery。

谢谢。

【问题讨论】:

  • 我遇到了同样的问题。经常重复的“替换当前选择”的代码片段在 chrome content-editable 中不起作用。由于某种原因,window.getSelection 正在返回 contentEditable 区域之外的选择(好像有两个选择上下文)跨度>

标签: jquery replace contenteditable selectedtext


【解决方案1】:
var str = 'Hello, World!'; var foo = 'World'; var bar = '** World **';

str = str.replace(foo, bar);

【讨论】:

  • 只要替换词是文本中的第一个,这将起作用。假设它稍后,我想用字符串开始的位置来替换。不是 replace() 函数,它只用另一个词替换这个词。
【解决方案2】:

此线程基于将所选文本包装在一个跨度中...非常接近您想要的。代码和小提琴应该给你你需要的东西

Wrapping a selected text node with span

【讨论】:

  • 谢谢,那里的代码似乎可以工作。非常感谢您的回答。 :D
猜你喜欢
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
相关资源
最近更新 更多