替换某个特定字符的字符串javascript

时间:2018-07-18 00:59:40

标签: javascript typescript

我为我的应用程序创建了一个自定义@mention系统,我唯一的问题是生病开始输入@...,然后我选择了我要提及的用户,然后发生的事情是所选用户的名字仅仅是将其添加到textarea的末尾,这样就可以了。如果我只输入@,但是如果我输入@ja然后选择jason smith,则现在会显示{{1} }如何删除@后面键入的所有文本,然后添加到我的字符串上。仅供参考,这是在@jaJason Smith

中完成的

所以我当前的功能是这样的。

textarea

所以发生的事情是我只是通过添加用户名来更新textarea的值

编辑

已经引起我注意,这不是最好的方法,因为如果用户将光标移到中间并输入@,名称将被添加到字符串的末尾而不是@,所以我的问题是是如何在@后面替换字符串,但是可以在textarea中的任何地方做呢?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

这是解决方案的简化版本。我没有您的安装程序可以对此进行测试,当然可以采用一种更清洁的方法来进行此操作,但这应该可以让您知道去哪里。

addMention(user: { value: string }): void {
  const textArea = document.querySelector('textarea');
  const selection = textArea.selectionStart;
  let value = textarea.value;
  const str = value.substring(0, textArea.selectionStart);
  const index = str.lastIndexOf('@');
  const mention = str.substring(index);
  value = `${value.substring(0, index)}${user.value}${value.substring(index + mention.length)}`;
  textarea.value = value;
}

答案 1 :(得分:1)

我跳过dom部分,strtextarea的值,placeholder指当前的智能,username指真实的用户名,{ {1}}是可以通过position

确定的光标位置

document.getElementById('textarea').selectionStart